会话在超时前过期

时间:2012-02-24 10:54:37

标签: c# asp.net

我在web.config文件中设置了sessiontimeout,如下所示。

<sessionState timeout="120"
         cookieless="false"
          mode="InProc"
        />

有些时候上面的代码工作正常。但是很多次会话在10到15分钟后自动过期。

并且每个浏览器都存在此错误。

当我在本地计算机上使用.net运行相同的应用程序时,它工作正常。

请注意,我还没有创建global.ascx文件。

2 个答案:

答案 0 :(得分:5)

应用程序回收时也会重置会话。当您更改网站中的某些内容时会发生这种情况,例如更改&#34; bin&#34;文件夹或修改&#34; web.config&#34;文件。

此外,IIS可能会停止或回收它认为目前尚未使用的应用程序。

即使用户离开后,您确定要将内存中的所有内容保留两个小时吗?保持会话活跃的更好方法是使用一些常规(每几分钟)AJAX回调。搜索&#34;会话保持活着的asp.net ajax&#34;。

答案 1 :(得分:1)

您是否验证了应用程序最终的会话超时?做一个Session.Timeout的response.write。可以在多个位置设置此值。

您如何知道用户正在使用?如果他只输入文本,滚动和/或读取的时间长度大于超时值,则会话将超时。浏览器必须向服务器调用HTTP请求才能重置计时器。

正如Hans所提到的,基于后台脚本的“pinger”设置为间隔运行以访问最小的Web内容将有所帮助。

考虑到我即将启动另一个Web应用程序,我似乎需要将此功能添加到大多数Web应用程序中,我受到了启发,创建了一个名为 Keep Me Alive 的小程序包以加速这个过程在未来。你可以在这里找到它: http://kma.codeplex.com/

希望它有所帮助!