寫了一個自定義HttpModule,但始終訪問不了Session,代碼如下:
public class RouteModule : IHttpModule, System.Web.SessionState.IRequiresSessionState { public void Dispose() { } public void Init(HttpApplication context) { context.AcquireRequestState += context_AcquireRequestState; } void context_AcquireRequestState(object sender, EventArgs e) { var sessionNull = (sender as HttpApplication).Session == null; if (sessionNull) { } }
}
如上,在AcquireRequestState 事件中Session始終是空,經多次調試發現,請求的是靜態資源時Session就是為空,諸如aspx、ashx這類的動態資源Session就可以訪問到,由此可見,只有在訪問有處理程序映射的資源時才會加載Session否則不加載Session,因此在HttpModule中訪問不到Session,這可能是IIS靜態資源優化的一種方式。