IIS 7中的会话超时

6

我希望在IIS 7.0(Windows Server 2008)中托管asp.net Web应用程序。

我将会话状态配置为sessionstate mode="inproc" timeout = 120。但是,即使在15秒内会话过期。这可能是什么问题?

谢谢

7个回答

10
你可以在以下两个区域检查连接超时时间。 enter image description here enter image description here 或者 Advanced settings

1
我认为会话超时和连接超时是两个不同的概念,但了解这一点很好。 - Jerther

7

请检查Windows事件日志,确保工作进程未被强制重新启动。

您的代码可能会导致工作进程强制重新启动,这种情况下,当会话存储在InProc中时,它将丢失所有保存的会话值。


6

4

Mmerrell撰写了这篇文章,是查找问题根源的关键:

检查Windows事件日志,确保工作进程没有被强制回收。

你的代码中可能会有一些原因导致工作进程强制回收,在这种情况下,当会话存储在InProc中时,它将失去所有保持的会话值。

查看“Windows日志/系统”上的事件查看器,您要查找一个包含以下描述的“WAS”源事件: “具有进程ID为'2980'的工作进程正在服务于应用程序池'SIAC',由于不活动而关闭。应用程序池超时配置设置为20分钟。需要时将启动新的工作进程。” 这就是您要寻找的症状。

带有WAS事件的事件查看器

希望能对您有所帮助。


1

我曾经使用C#编写的HTTP处理程序遇到了几乎相同的问题,涉及SessionState。似乎应该将属性IsReusable设置为false,否则我会遇到会话丢失的问题。

感谢Mmerrell的回复,让我找对了方向。


0

您需要在IIS=>应用程序池=>高级设置中进行这些更改...

enter image description here enter image description here enter image description here


0
还有一件事情需要检查 - 应用程序池高级设置 - 虚拟内存限制。请查看是否明确设置了该限制 - 因为一旦超过设置的限制,它可能会自动回收。特别是如果您在事件日志中看到以下错误:

进程 ID 为 '****' 的工作进程正在为应用程序池 'your-app-pool-name' 提供服务,因为它已达到其虚拟内存限制而请求回收。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接