public override void Init()
{
//在注册管道事件中 require session state
//只能在引发“HttpApplication.AcquireRequestState”之前调用“HttpContext.SetSessionStateBehavior”。
this.BeginRequest += (sender, e) => HttpContext.Current.SetSessionStateBehavior(SessionStateBehavior.Required);
base.Init();
}
代码如上。是在global中的一个重写HttpApplication方法,就这么简单。
原理就是在管道第九个事件AcquireRequestState之前,require session state.因为第九个事件就准备开始获取session.
如果你在第九个事件或者第九个事件之后才注册,那么一定会报如下错误:只能在引发“HttpApplication.AcquireRequestState”之前调用“HttpContext.SetSessionStateBehavior”。
关于请求管道,推荐一篇园友的文章:Asp.Net请求处理之管道
原文:http://www.cnblogs.com/tdws/p/5280500.html