我已经看到了像我这样的其他问题,但它们并不像我的那样。我通过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分钟吗?这几乎就是它的表现。
答案 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)
一个偶然的机会是任何人都在检查它,并且无法弄清楚为什么他们遵循了上面的说明,但是在其他环境中它仍然会超时-您可能要检查一下负载均衡器是否处于“在会话到期之前切换到差异节点。