一:有些杀病毒软件会去扫描您的Web.Config文件,那时Session肯定掉,这是微软的说法。
二:程序内部里有让Session掉失的代码,及服务器内存不足产生的。
三:程序有框架页面和跨域情况。
第一种解决办法是:使杀病毒软件屏蔽扫描Web.Config文件(程序运行时自己也不要去编辑它)
第二种是检查代码有无Session.Abandon()之类的。
第三种是在Window服务中将ASP.NET State Service 启动。
------------------------------------
我遇到的是 第三种
我已经 在Window服务中将ASP.NET State Service 启动。
启动StateService之后,还需要配置好Web.config中StateMode为StateServer方可,不会丢失Session,除非有什么东西在不断地清除Session。
操作如下
1。打开web.config文件,设置如下:
<!-- 会话状态设置
默认情况下,ASP.NET 使用 Cookie 来标识哪些请求属于特定的会话。
如果 Cookie 不可用,则可以通过将会话标识符添加到 URL 来跟踪会话。
若要禁用 Cookie,请设置 sessionState cookieless="true"。
-->
<sessionState mode="StateServer" //就是修改这里为“StateServer”
/>
2。打开“控制面板--管理工具--服务”,找到ASP.NET State Service这个服务,将其设为自动启动。