我希望在IIS 7.0(Windows Server 2008)中托管asp.net Web应用程序。
我将会话状态配置为sessionstate mode="inproc" timeout = 120。但是,即使在15秒内会话过期。这可能是什么问题?
谢谢
我希望在IIS 7.0(Windows Server 2008)中托管asp.net Web应用程序。
我将会话状态配置为sessionstate mode="inproc" timeout = 120。但是,即使在15秒内会话过期。这可能是什么问题?
谢谢
请检查Windows事件日志,确保工作进程未被强制重新启动。
您的代码可能会导致工作进程强制重新启动,这种情况下,当会话存储在InProc中时,它将丢失所有保存的会话值。
<system.web>
<sessionState timeout="2" />
将超时时间设置为2分钟。
http://msdn.microsoft.com/en-us/library/h6bb9cz9(vs.71).aspx
Mmerrell撰写了这篇文章,是查找问题根源的关键:
检查Windows事件日志,确保工作进程没有被强制回收。
你的代码中可能会有一些原因导致工作进程强制回收,在这种情况下,当会话存储在InProc中时,它将失去所有保持的会话值。
查看“Windows日志/系统”上的事件查看器,您要查找一个包含以下描述的“WAS”源事件: “具有进程ID为'2980'的工作进程正在服务于应用程序池'SIAC',由于不活动而关闭。应用程序池超时配置设置为20分钟。需要时将启动新的工作进程。” 这就是您要寻找的症状。
希望能对您有所帮助。
我曾经使用C#编写的HTTP处理程序遇到了几乎相同的问题,涉及SessionState。似乎应该将属性IsReusable设置为false,否则我会遇到会话丢失的问题。
感谢Mmerrell的回复,让我找对了方向。
进程 ID 为 '****' 的工作进程正在为应用程序池 'your-app-pool-name' 提供服务,因为它已达到其虚拟内存限制而请求回收。