我使用 ASP.NET 成员 API。这会自动注销非活动会话。我不希望这种自动注销。我使用了一些变通方法,例如在指定时间后在 ajax 中调用页面。或者我使用 iframe 方法来保持会话处于活动状态。但这不太适合我的需求。我想完全禁用此注销功能。
注意 我的问题是对这篇文章的回应这个
增加会话超时并不总是有效
乍一看,增加 C# ASP .NET 的 web.config 文件中的会话超时值应该可以解决问题。您可以假设通过将下一行中的超时值更改为 60 分钟,用户将在整个 60 分钟内保持登录到 Web 应用程序会话。
<authentication mode="Forms">
<forms name="MyAuth" timeout="60" protection="All" loginUrl="~/Web/Login.aspx" slidingExpiration="true" />
</authentication>
<sessionState mode="InProc" cookieless="false" timeout="60" />
然而,这实际上存在两个问题。第一个问题是,将超时值设置为大于 1 小时将导致服务器上保留过多的内存,因为 IIS 在会话期间保留了所有会话内存。想象一个高流量站点的超时值为 5 小时,它保存了数千个用户会话的所有会话数据。第二个问题可能出现在测试应用程序时,Web 应用程序通常会在 15 分钟后超时。到底发生了什么?虽然问题实际上可能是在 IIS 中为会话超时或连接超时属性配置的值(在共享主机的情况下,您甚至可能无法访问),但显然我们需要将会话超时控制到我们自己的双手。