ASP.NET Session 丢失原因
asp 中 Session 的工作原理:
asp 的 Session 是具有进程依赖性的。ASP Session 状态存于 IIS 的进程中,也就是
inetinfo.exe 这个程序。所以当 inetinfo.exe 进程崩溃时,这些信息也就丢失。另外,重
起或者关闭 IIS 服务都会造成信息的丢失。
asp.net Session 的实现
asp.net 的 Session 是基于 HttpModule 技术做的,HttpModule 可以在请求被处理
之前,对请求进行状态控制,由于 Session 本身就是用来做状态维护的,因此用
HttpModule 做 Session 是再合适不过了。
丢失原因:
1. bin 目录中的文件被改写,asp.net 有一种机制,为了保证 dll 重新编译之后,
系统正常运行,它会重新启动一次网站进程,这时就会导致 Session 丢失,
所以如果有 access 数据库位于 bin 目录,或者有其他文件被系统改写,就会
导致 Session 丢失。
2. 文件夹选项中,如果没有打开“在单独的进程中打开文件夹窗口”,一旦新建一
个窗口,系统可能认为是新的 Session 会话,而无法访问原来的 Session,
所以需要打开该选项,否则会导致 Session 丢失。
3. 似乎大部分的 Session 丢失是客户端引起的,所以要从客户端下手,看看
cookie 有没有打开。
4. Session 的时间设置是不是有问题,会不会因为超时造成丢失
5.IE 中的 cookie 数量限制(每个域 20 个 cookie)可能导致 session 丢失
6.使用 web garden 模式,且使用了 InProc mode 作为保存 session 的方式。