我試圖訪問查詢字符串參數並將其保存到Session變量。由於我正在處理的解決方案有幾個基本佈局,最簡單的方法是將其添加到管道處理程序。然而,我的代碼失敗,因爲args.Context.Session爲空:訪問HttpRequest管道中的會話
public class SaveQueryStringToSession : HttpRequestProcessor
{
public override void Process(HttpRequestArgs args)
{
Assert.ArgumentNotNull((object)args, "args");
string queryString = WebUtil.GetQueryString("parm1");
if (queryString.Length <= 0)
return;
args.Context.Session["parm1"] = queryString;
}
}
時,這種方法被插入任一HttpRequestBegin或HttpRequestEnd管道發生這種情況。很想知道爲什麼,以及是否有標準的解決方法或模式在這裏使用。在IIS 7.5(是的,我將添加一個空檢查。沒有必要指出這一點。)
我跑Sitecore的Sitecore.NET 6.4.1(修訂版110720)(集成.NET 2.0)
可能相關鏈接:
- What is the first global.asax event that Session is accessible assuming the context handler is IRequiresSessionState or IReadOnlySessionState?
- http://intothecore.cassidy.dk/2009/02/session-state-and-integrated-pipeline.html
我懷疑這是因爲Sitecore在SessionState模塊之前插入它的HttpModule,所以您在創建會話之前運行它。 – ddysart