設計一個HttpHandler的時候發生了怎麼都無法訪問或者設置Session的問題:
//代碼是在網吧手動敲打,錯別字請別在意,意思明確即可
public class HttpHandlerTest : System.Web.IHttpHandler
{
public void ProcessRequest(System.Web.HttpContext context)
{
Response.Write(context.Session.SessionID.ToString());
}
}
調試發現連SessionID都無法獲取,提示沒有該對象的實例。難道這時HttpSession還沒有啟動(實例化)?
花了幾個小時查詢MSDN中Http管線鏈的全部流程裡的事件,一個個測試,發現都無法訪問Session對象,有點奇怪,查詢HttpSessionState同一命名空間下的對象,發現有一個接口:IRequireSessionState,提示這是一個無具體方法定義的接口,但是實現這個接口便可以訪問HttpSessionState對象了。測試一下,成功!
public class HttpHandlerTest : System.Web.IHttpHandler , System.Web.HttpSessionState.IRequireSessionState
{
public void ProcessRequest(System.Web.HttpContext context)
{
Response.Write(context.Session.SessionID.ToString());
}
}
一切OK!
|
|