ASP.NET会话意外超时

时间:2011-11-29 14:29:05

标签: asp.net session

我在IIS 5.0(Windows 2000服务器)中有一个asp.net应用程序,我的应用程序正在使用Windows身份验证,我已将超时设置为120分钟。假设用户从11:00开始工作并且用户正在处理该应用程序但是在大约2小时后,即大约13:00之后,即使用户正在处理它,会话也会意外超时。我将超时修改为300分钟,现在会话保持活动状态大约5小时,并且即使用户仍在工作,也会意外断开连接。 我有web.config文件,如下所示。

<authentication mode="Windows"/>
 <sessionState timeout="120">

还检查了虚拟目录属性中的asp.net会话超时,这是120分钟。

任何教学或解决方案都会非常有用。

4 个答案:

答案 0 :(得分:1)

如果使用InProc会话状态模式,如果应用程序池被回收,则无论超时参数如何,所有会话信息都可能随时丢失,这可能由于各种原因随时发生。

如果可以的话,我会改为Out Of Proc Session State模式之一。

检查以下链接:

asp.net inproc vs out of proc performance

http://www.hanselman.com/blog/TroubleshootingExpiredASPNETSessionStateAndYourOptions.aspx

答案 1 :(得分:1)

我的情况超时是因为当用户意外断开连接时会话未正确结束。当用户下次连接时,这会导致一些超时问题。正确关闭会话后,它可以正常工作

答案 2 :(得分:1)

有同样的问题。我的情况不是sessionState中的超时

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

表格超时

<authentication mode="Forms">
  <forms loginUrl="~/" slidingExpiration="true" timeout="5" />
</authentication>

我将表单中的超时设置为120(2小时)及其工作

<authentication mode="Forms">
  <forms loginUrl="~/" slidingExpiration="true" timeout="120" />
</authentication>

答案 3 :(得分:0)

您是否检查了应用程序池的超时时间?

IIS -> application pools -> select pool -> Advanced settings -> section "process model" => Idle Time-out(minutes)