2

PortalSiteMapProvider を使用するイベント レシーバーを作成しようとしています。イベント レシーバー内にHTTPContextまたは SPContext を持たない場合、PortalSiteMapProvider にアクセスするにはどうすればよいでしょうか?

4

1 に答える 1

2

イベントレシーバーでこれを試してください:

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);

そこから SPContext を取得できるはずです。

于 2011-11-15T22:46:51.893 に答える