Question

J'essaie de mettre en œuvre IHTTTPHANDLER dans SharePoint 2010 et pour référence, j'utilise ceci: http://blogs.msdn.com/b/kaevans/archive/2010/08/04/deploying-an-asp-net-httphandler-a-SharePoint-2010.aspx

Mais je reçois SPContext.Current est "NULL" et ne peut pas récupérer le site de contexte.

L'URL est comme:

http://spsvr/sitecoll/subsite/_layouts/myfolder/myhandler.ashx?param1=paramvalue

Était-ce utile?

La solution

Je réponds à mes questions.
Après avoir examiné @simondoy Commenter que "c'est étrange" et réalisé que je fais vraiment une erreur, puis réalisez une erreur.

J'ai commis une erreur, je courais avec une permission élevée et dans ce que je faisais référence à Spcontext.current.

Le code d'erreur

public void ProcessRequest(HttpContext context)
{
    SPSecurity.RunWithElevatedPrivileges(delegate
    {
       // 'SPContext.Current' null reference error
        using (var site = new SPSite(SPContext.Current.Site.ID))
        {
            using (var web = site.OpenWeb(SPContext.Current.Web.ID))
            {
               // codes goes here
            }
        }
    });

}

Le code fixe

public void ProcessRequest(HttpContext context)
{
    var curSite = SPContext.Current.Site;
    var curWeb = SPContext.Current.Web;
    SPSecurity.RunWithElevatedPrivileges(delegate
    {
        using (var site = new SPSite(curSite.ID))             {
            using (var web = site.OpenWeb(curWeb.ID))
            {
                // code goes here
            }
        }
    });

}

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top