ASP.NET Session提前退出

时间:2015-12-30 19:57:16

标签: c# asp.net session iis

我已经看到了像我这样的其他问题,但它们并不像我的那样。我通过web.config文件中的以下条目使用标准ASP.NET身份验证:

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

login.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分钟吗?这几乎就是它的表现。

2 个答案:

答案 0 :(得分:1)

删除Forms标记中的超时值,并在Web.config中添加Session time out

 <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>

答案 1 :(得分:0)

一个偶然的机会是任何人都在检查它,并且无法弄清楚为什么他们遵循了上面的说明,但是在其他环境中它仍然会超时-您可能要检查一下负载均衡器是否处于“在会话到期之前切换到差异节点。