ASP.NET为什么会话超时,sessionstate超时设置

时间:2011-05-06 14:28:31

标签: asp.net session

嘿,我的web.config中有以下行

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

我认为这会使会话保持完整45分钟

但我已经看到如果用户处于非活动状态的情况,可以说15分钟会话超时。

我该怎么办?

编辑:注意我在母版页中有以下行

meta http-equiv =“Refresh”content =“1800; URL = http://www.virtualacademy.ie/login.aspx”&gt;

也许这导致了这个问题,上面的行是做什么,即数字1800

4 个答案:

答案 0 :(得分:18)

请务必检查您的IIS配置,因为您的站点所在的应用程序池也有自己的超时值,该值将覆盖您自己的.config。

要增加它,

  1. 打开IIS
  2. 选择左侧的应用程序池
  3. 选择您网站使用的应用程序池
  4. 选择高级设置
  5. 在Process Model categories下,将'Idle Time-out'值增加到所需的长度。
  6. 希望这有帮助。

    (如果您的托管服务提供商没有专用的服务器/ IIS访问权限,则必须与他们联系,看看他们是否可以为您增加)

答案 1 :(得分:5)

如果用户关闭浏览器或清除cookie,或者服务器上的AppDomain被回收,会话状态将会丢失。

您是否检查了日志以查看该应用是否正在回收?

答案 2 :(得分:5)

如果sessionStateInProc

AppDomain回收是一个非常常见的问题。建议使用StateServerSQLServer代替生产系统。有关如何使用每种文档的文档以及三种不同类型的优缺点,请参阅Session-State Modes

就个人而言,如果必须用于Web服务器场,我们使用SQL Server - 速度较慢但可以共享。我们使用状态服务器,如果该站点仅托管在单个Web服务器上 - 状态可以在AppDomain重新启动时生存,但不会重启整个服务器。

此外,过去我们在后台使用AJAX帖子,而用户正在观看长时间运行的视频或执行长时间的客户端任务,以便会话超时每隔几分钟重置一次。关于这段代码没有什么特别之处 - 每隔几分钟就会有一些JavaScript点击一些没有返回任何内容的ASPX页面。

答案 3 :(得分:0)

您使用的是表单身份验证吗?它有自己的超时设置,当到期时,即使会话仍然有效,也会将用户重定向到您的登录页面。