Spcontext.current est null pour ihttPhandler
-
10-12-2019 - |
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
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