【问题标题】:ASP.NET Session timing out earlyASP.NET 会话提前超时
【发布时间】:2016-04-04 19:56:58
【问题描述】:

我也见过其他类似我的问题,但它们与我的不完全一样。我通过 web.config 文件中的以下条目使用标准 ASP.NET 身份验证:

<authentication mode="Forms">
  <forms name=".ASPXAUTH" loginUrl="login.aspx" timeout="3600" />
</authentication>

登录.aspx.cs

accountID = myReader["AccountID"].ToString();
Session["AccountID"] = accountID;

我用 1 和 5 的值对此进行了测试,它的工作原理应该是这样。将其设置为 3600 并离开半小时,当我重新加载页面时,它过期并重定向我登录。我阅读了有关 IIS 会话状态设置的信息。我在尝试 1 分钟和 5 分钟之前禁用了这些,它似乎有效。只是长时间不工作。最初 IIS 设置为进程中,模式为使用 cookie,超时为 20 分钟。将其更改为 3600 以匹配 web.config 并且它超时太早。禁用它,它的工作时间间隔很短,似乎不到 30 分钟。

当我在 IIS 中更改这些设置时,是否需要重置 IIS?那么当我认为它被禁用时,这个设置仍然是 20 分钟吗?这似乎就是它的行为方式。

【问题讨论】:

  • 会话超时源自 ;将超时值更改为 60 并尝试
  • 我认为您混淆了 ASP.NET 表单身份验证和 ASP.NET 会话。这些是完全不同的概念。
  • 两个正确的 cmets。我雇了一个人来创建身份验证系统并登录,因为我自己没有时间研究它。不确定他们做得对。

标签: c# asp.net session iis


【解决方案1】:

删除 Forms 标签中的超时值并在 Web.config 中添加会话超时

 <sessionState mode="InProc" customProvider="DefaultSessionProvider" timeout="20">
  <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
  </providers>
</sessionState>

【讨论】:

  • 嗨,感谢您的回答。我需要所有这些还是会像这样工作?
  • 它应该可以工作; sessionState 中的超时值以分钟为单位
  • 好的,谢谢。不幸的是,测试需要一点时间。我认为它会起作用,当它起作用时我会标记你的答案。
  • 刚刚测试了它,它似乎工作!它至少似乎打破了看似 20 分钟的门槛。我认为由于超时在错误的位置,也许 IIS 试图以某种默认方式处理超时。这就是我能想到的。
【解决方案2】:

如果有人正在检查这个并且无法弄清楚他们为什么遵循上述说明,但在其他环境中它仍然会提前超时 - 您可能需要检查负载平衡器是否“ t 在会话到期之前切换到不同的节点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多