我在web.config文件中设置了sessiontimeout,如下所示。
<sessionState timeout="120"
cookieless="false"
mode="InProc"
/>
有些时候上面的代码工作正常。但是很多次会话在10到15分钟后自动过期。
并且每个浏览器都存在此错误。
当我在本地计算机上使用.net运行相同的应用程序时,它工作正常。
请注意,我还没有创建global.ascx文件。
答案 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/
希望它有所帮助!