Can we get the HTTPContext in custom event handlers in SharePoint ?


Yes, but not everywhere. Means, we will get the HTTPContext from the initial call of the base class default constructor from the particular class which inheriting the event receiver class. I have tested only with SPItemEventReceiver class and it does work and I hope it will work fine for all other event receivers.


I saw lots of articles and forums says, we can’t get the HTTPContext in an event handler, then I had researched some more deeper, then found that we will get it, but we can use it only in synchronous events like ItemAdding, ItemUpdating etc, we won’t get it in asynchronous events like ItemAdded , ItemUpdated etc.


using System;


using System.Collections.Generic;


using System.Text;


using System.Web;


using Microsoft.SharePoint;


 


namespace TestEvent


{


    public class MyCustomEventHandler : SPItemEventReceiver


    {


        HttpContext hContext = null;


 


        public MyCustomEventHandler() : base()


        {


            hContext = HttpContext.Current; // we will get


                 the HttpContext from the default constructor , but we have


                 to provide the


 


        }


 


      public override void ItemAdding(SPItemEventProperties properties)


        {


           hContext.Response.Redirect(“http://microsoft.com”)


        }         


 


    }


}


Comments (8)

  1. Eric Bartels says:

    Note that the current thread gets aborted and the item will never be added to the list/library!!

  2. sowmyancs says:

    Exactly, since while adding an item to a list, I am redirecting the user to an another site, Thus the sample code will abort the current thread. My intention was to just provide a sample code on how we can get that httpcontext in event handlers.

    I saw your blog regarding this and it was really a great presentation.

    Thanks,

    Sowmyan

  3. This dont work:

    properties.UserDisplayName.ToString();

    ??

  4. Paresh Rao says:

    I am unable to find httpcontext object. its return null

    here below is mu code

    namespace RestrictFolderEventReceiver.FolderAccessDenied

    {

       /// <summary>

       /// List Item Events

       /// </summary>

       public class FolderAccessDenied : SPItemEventReceiver

       {

           HttpContext currentContext;

           public FolderAccessDenied(): base()

           {

               currentContext = HttpContext.Current;

           }        

     }

    }

  5. Ava says:

    I have same problem as Paresh Rao. why my HttpContext.Current in constructor return null?

  6. khushbu sharda says:

    I was able to get HTTPContext in custom event handlers. But i am not able to capture user input from Javascript Confirm pop up. is there a way round?

    Response.Writ() of HTTPContext to get pop up.

    I am getting pop up but not able to save user input.