SPContext.A corrente é NULA para IHttpHandler
-
10-12-2019 - |
Pergunta
Estou tentando implementar a IHttpHandler no SharePoint 2010 e para a referência que eu estou usando isso: http://blogs.msdn.com/b/kaevans/archive/2010/08/04/deploying-an-asp-net-httphandler-to-sharepoint-2010.aspx
Mas eu estou ficando SPContext.A corrente é "nulo" e não é possível obter o contexto do site.
O url é semelhante a:
http://spsvr/sitecoll/subsite/_layouts/myfolder/myhandler.ashx?param1=paramvalue
Solução
Estou respondendo minhas perguntas.
Depois de analisar @SimonDoy comentário de que "isso é estranho", e percebi que eu realmente estou fazendo algumas erro e, em seguida, perceber o engano.
Fiz engano, eu estava correndo com permissão elevada e dentro do que eu estava fazendo referência SPContext.Atual.
O código de erro
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
}
}
});
}
O código fixo
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
}
}
});
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange