关于Session问题

出了一个明奇妙的问题,用Session记录权限信息容易丢失相关信息,查明原因是:
  默认情况下是InProc,也就是将Session保存在进程内(IIS5是aspnet_wp.exe,而IIS6是W3wp.exe),这个进程不稳定,在某些事件发生时,进程会重起,所以造成了存储在该进程内的Session丢失。

  哪些情况下该进程会重起呢?微软的一篇文章告诉了我们:

  1、配置文件中processModel标签的memoryLimit属性

  2、Global.asax或者Web.config文件被更改

  3、Bin文件夹中的Web程序(DLL)被修改

  4、杀毒软件扫描了一些.config文件。

  更多的信息请参考PRB: Session variables are lost intermittently in asp.net applications

     解决方式包括:

    1、将服务器Session信息存储在进程外

         Web.config文件中,将mode的值改为StateServer。stateConnectionString="tcpip=127.0.10.1:42424"。不要忘记启动ASP.NET 状态服务服务。

    2、将服务器Session信息存储在SQL Server中

        C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 目录下的InstallSqlState.sql文件SQL管理器中执行,然后修改

Web.config文件中,将mode的值改为SQLServer。sqlConnectionString="data source=localhost; Integrated Security=SSPI;"的形式,意思想想可以明白的。
这两种方式不会伴随IIS的重启Session丢失的,除非超时了,可以试试哦

参考资料:

http://www.cnblogs.com/tonyqus/archive/2006/10/24/522618.html

http://tech.ddvip.com/2009-07/1248501422126295.html
http://www.builder.com.cn/2008/0323/780027.shtml
 

posted on 2011-03-05 17:34  星星博客园  阅读(180)  评论(0编辑  收藏  举报

导航

立即注册PayPal并开始接受信用卡付款。