2017-10-11 69 views
2

我正在创建一个ASP.NET MVC 5应用程序。当应用程序停留几分钟(大约15分钟)时,会话超时,我无法再访问会话值。什么触发了早期会话超时

但是在我web.config文件,我有下面的代码行:

<sessionState mode="InProc" timeout="30" /> 

所以,你会希望会议在30分钟后超时,遗憾的是这没有发生。如果我将会话时间缩短到5分钟,那么会话将在5分钟内超时,但如果时间更长,则会有30分钟的时间,但时间太早。

什么事件或情况可能触发早期会话超时?

+4

您正在使用InProc会话状态,因此它成为应用程序池的职责,将会话保留在内存中。应用程序池是否被回收?您是否正在运行负载平衡的环境,在几分钟后可能会将其发送到其他服务器/进程? – sisve

+0

您可能需要为应用程序池设置空闲超时设置。默认时间是20分钟 –

+0

可能的重复[如何设置会话超时超过20分钟?](https://stackoverflow.com/questions/1725925/how-to-set-session-timeout-more-than-20 -min) – Juan

回答

1

您需要检查服务器端和客户端都有合适的超时值。如果你的客户端设置为30,而你的服务器端没有设置任何设置,它将默认为20分钟(我认为20分钟是超时)。除此之外,你可能想看看不同的设计模式。如果你真的需要扩展它,那么两端都需要配置扩展超时。