ASP SESSION莫名其妙丢失的原因及解决方法
2007-06-12 11:19 迷路中的路人甲 阅读(1360) 评论(0) 编辑 收藏 举报哪些情况下该进程会重起呢?微软的一篇文章告诉了我们:
1、Global.asax或者Web.config文件被更改
2、Bin文件夹中的Web程序(DLL)被修改
3、杀毒软件扫描了一些.config文件。
4、有的页面,不小心把using System.Web.SessionState;给删除了
5、删除了其中的文件夹,ASP。NET会重启,丢失SESSION
6、判断session存在的方法不能是静态方法
也就是说 asp.net 会监视应用程序目录,一但有被监视
的动作发生(比如:修改了config、重命名目录等)应用程序就会自动重起
当然这时你的session一定丢失了。
asp的Session是具有进程依赖性的。ASP Session状态存于IIS的进程中,也就是inetinfo.exe这个程序。所以当inetinfo.exe进程崩溃时,这些信息也就丢失。另外,重起或者关闭IIS服务都会造成信息的丢失。
文件夹选项中,如果没有打开“在单独的进程中打开文件夹窗口”,一旦新建一个窗口,系统可能认为是新的Session会话,而无法访问原来的Session,所以需要打开该选项,否则会导致Session丢失
另外注意
1当页面中是否了frameset,发现在每个frame中显示页面的SessionID在第一次请求时都不相同
2WINDOW.showDialog和window.open也有时会出现这个问题
3重定向也会有时出现这个问题
解决方法:
可以把SESSION用STAT SERVER来保存。STAT SERVER默认是不启动的。设成自动启动
但看网上,这个方法也不是能百分百解决问题,但至少使问题少了许多。