[导入]Url重写后Session失效的问题
示例如下:Login页面,负责登录验证,登录成果后,转到Default页面,在Default上有个链接,地址为123.shtml,这是一个假的地址,真正的地址是Detail.aspx?id=123,这样就需要一个HttpHandler来处理这种类型的地址,目录结构如下:
源代码如下:
Default.aspx
Default.aspx.cs
Login.aspx
Login.aspx.cs
Detail.aspx
Detail.aspx.cs
UserInfo.cs
MyHandler.cs
这样就会报错,错误为:
“/WebSite1”应用程序中的服务器错误。
只有在配置文件或 Page 指令中将 enableSessionState 设置为 true 时,才能使用会话状态。还请确保在应用程序配置的 <configuration>\<system.web>\<httpModules> 节中包括 System.Web.SessionStateMod 或自定义会话状态模块。
按照提示将Page指令中的enableSessionState设置为true,不行。
中断调试,刚到Detail的这一句就挂了:UserInfo ui =Session["User"] as UserInfo;原因是Session根本就没有?!怎么可能?!
最后搜到一篇的末尾说,“当希望在HttpHandler中访问Session时,你必须实现IReadOnlySessionState接口”,没法子,死马当作活马医吧,奇怪,这个接口中居然没有方法。不错。
Ok了,土鳖不扛铁牛了。
文章来源:http://blog.sina.com.cn/s/blog_49458c270100b9xm.html