大力水手的Blog

大力水手语录

导航

[导入]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

posted on 2008-09-11 23:17  jack.zhou  阅读(258)  评论(0编辑  收藏  举报