【问题标题】:ASP.NET Why are sessions timing out, sessionstate timeout setASP.NET 为什么会话超时,会话状态超时设置
【发布时间】:2011-05-06 14:28:31
【问题描述】:

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

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

我认为这会使会话保持 45 分钟不变

但我见过这样的情况,如果用户在 15 分钟内处于非活动状态,会话就会超时。

我怎样才能阻止这种情况?

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

meta http-equiv="Refresh" content="1800;URL=http://www.virtualacademy.ie/login.aspx">

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

【问题讨论】:

    标签: asp.net session


    【解决方案1】:

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

    为了增加它,

    1. 打开 IIS
    2. 选择左侧的应用程序池
    3. 选择您的站点使用的应用程序池
    4. 选择高级设置
    5. 在流​​程模型类别下,将“空闲超时”值增加到所需的长度。

    希望这会有所帮助。

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

    【讨论】:

    • 允许的最大值约为 1740 分钟 = 29 小时。
    • @t_plusplus Idle Time-out 的最大允许数字是 43200 但该值需要是 Regular Time Interval 的值,默认为 1740 分钟。
    • Timeout 属性的值不能设置为大于 525,600 分钟(1 年)msdn.microsoft.com/en-us/library/…
    【解决方案2】:

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

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

    【讨论】:

    • 不是通过关闭浏览器或清除 cookie。我应该更好地描述这个场景。基本上,用户必须观看一段时长为 20 分钟的视频,但当他们看完电影时,他们似乎会超时。我正在使用一个名为 blacknight 的托管服务,我对回收一无所知
    【解决方案3】:

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

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

    此外,过去我们在用户观看长时间运行的视频或执行长时间的客户端任务时在后台使用 AJAX 帖子,以便会话超时每隔几分钟重置一次。这段代码没有什么特别之处——只是每隔几分钟就对某个 ASPX 页面进行一点 JavaScript 操作,但什么都不返回。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 他对登录什么都没说;他在谈论会话状态被清除...不是吗?
      • 不使用表单身份验证
      猜你喜欢
      • 1970-01-01
      • 2011-10-11
      • 1970-01-01
      • 2013-02-17
      • 2011-02-07
      • 2010-12-05
      • 1970-01-01
      • 2012-10-13
      相关资源
      最近更新 更多