2009-10-08 4 views
2

J'essaie d'écrire un récepteur d'événements qui utilise PortalSiteMapProvider. Sans HTTPContext ou SPContext INSIDE le récepteur d'événements, comment peut-on accéder à PortalSiteMapProvider?SPContext dans Event Receiver (PortalSiteMapProvider)

+0

Je serais plus intéressé par la façon dont vous utiliseriez un récepteur d'événements sans avoir un objet SPContext. S'il vous plaît, expliquez. –

+0

Vous n'avez pas SPContext dans un récepteur d'événements. –

+0

Quel type d'événement utilisez-vous? –

Répondre

2

Essayez dans votre récepteur d'événements:

var web = properties.Web;  

HttpRequest request = new HttpRequest(string.Empty, web.Url, string.Empty); 

HttpResponse response = new HttpResponse(new System.IO.StreamWriter(new System.IO.MemoryStream())); 

HttpContext impersonatedContext = new HttpContext(request, response); 

impersonatedContext.Items["HttpHandlerSPWeb"] = web; 

HttpContext.Current = impersonatedContext; 

SPContext context = SPContext.GetContext(impersonatedContext); 

Vous devriez être en mesure d'obtenir votre SPContext de cela.