ASP.NET中Session丢失原因与解决方案小结
来源:互联网 发布:淘宝原图恢复 编辑:程序博客网 时间:2024/05/22 01:42
win2003server下的IIS6默认设置下对每个运行在默认应用池中的工作者进程都会经过20多个小时后自动回收该进程,造成保存在该进程中的Session丢失。
因为Session,Application等数据默认保存在运行该Web应用程序的工作者进程中,如果回收工作者进程,则会造成丢失。
解决办法:
修改配置,设置为不定时自动回收该工作者进程,比如设置为当超出占用现有物理内存60%后自动回收该进程。通过使用默认应用程序池,可以确保多个应用程序间互相隔离,保证由于一个应用程序的崩溃不会影响另外的Web应用程序。还可以使一个独立的应用程序运行在一个指定的用户帐号特权之下。
如果使用StateServer方式或者SqlServer数据库方式来保存Session,则不受该设置的影响。
可能的原因2:
系统要运行在负载平衡的Web场环境中,而系统配置文件web.config中的Session状态却设置为InProc(即在本地存储会话状态),导至在用户访问量大时,Session常经超时的情况。引起这个现象的原因主要是因为用户通过负载平衡IP来访问WEB应用系统,某段时候在某台服务器保存了Session的会话状态,但在其它的WEB前端服务器中却没有保存Session的会话状态,而随着并发量的增大,负载平衡会当作路由随时访问空闲的服务器,结果空闲的服务器并没有之前保存的Session会话状态。
解决办法:
1.当您在负载平衡的Web场环境中运行ASP.NETWeb应用程序时,一定要使用SqlServer或StateServer会话状态模式,在项目中我们基于性能考虑并没有选择SqlServer模式来存储Session状态,而是选择一台SessionStateServer服务器来用户的Session会话状态。我们要在系统配置文件web.config中设置如下:
<SessionStatemode="StateServer"cookieless="false"timeout="240"stateConnectionString="tcpip=192.168.0.1:42424"stateNETworkTimeout="14400"/>
还要添加一项
<machineKeyvalidationKey="78AE3850338BFADCE59D8DDF58C9E4518E7510149C46142D7AAD7F1AD49D95D4"decryptionKey="5FC88DFC24EA123C"validation="SHA1"/>
2.我们同时还要在SessionStateServer服务器中启动ASP.NETStateService服务,具体设置:控制面板>>管理工具>>服务>>ASP.NETStateService,把它设为自动启动即可。
3.每台前端WEB服务的Microsoft“InterNET信息服务”(IIS)设置
要在Web场中的不同Web服务器间维护会话状态,Microsoft“InterNET信息服务”(IIS)配置数据库中Web站点的应用程序路径(例如,/LM/W3SVC/2)与Web场中所有Web服务器必须相同。大小写也必须相同,因为应用程序路径是区分大小写的。在一台Web服务器上,承载ASP.NET应用程序的Web站点的实例ID可能是2(其中应用程序路径是/LM/W3SVC/2)。在另一台Web服务器上,Web站点的实例ID可能是3(其中应用程序路径是/LM/W3SVC/3)。因此,Web场中的Web服务器之间的应用程序路径是不同的。我们必须使Web场Web站点的实例ID相同即可。你可以在IIS中把某一个WEB配置信息保存为一个文件,其他Web服务器的IIS配置可以来自这一个文件。
- ASP.NET中Session丢失原因与解决方案小结
- Session丢失原因与解决方案小结 (zt)
- Session丢失原因与解决方案小结
- {转}Session丢失原因与解决方案小结
- Session丢失原因与解决方案小结
- Session丢失原因与解决方案小结
- Session丢失原因与解决方案小结
- asp.net中Session丢失的原因
- 【Session丢失】ASP.NET Session丢失原因
- ASP.NET Session丢失问题原因及解决方案
- ASP.NET Session丢失问题原因及解决方案
- ASP.NET Session丢失问题原因及解决方案
- ASP.NET Session丢失问题原因及解决方案
- ASP.NET Session丢失问题原因及解决方案
- ASP.NET Session丢失问题原因及解决方案
- session丢失原因与解决方案
- Session专题——ASP.NET Session丢失问题原因及解决方案
- ASP.NET Session丢失原因和对策
- PHP新手上路(十四)
- 学习Asp.Net经常会用到的函数集
- PHP新手上路(十二)
- .net开发中的一些注意事项及小技巧
- PHP新手上路(十一)
- ASP.NET中Session丢失原因与解决方案小结
- PHP新手上路(九)
- 在ASP.NET+ORACLE添加数据记录并让ID自动增量
- PHP新手上路(十)
- .Net中消除Dll中的dependency
- PHP新手上路(八)
- ASP.NET页面事件:顺序与回传详解
- PHP新手上路(六)
- Asp.net直接保存文件到客户端