ASP.net 页面会话超时无效

ASP.net Page session timeout not working

我遇到了一个非常奇怪的问题,无论我做什么都无法阻止页面超时。这是场景 我们有几个包含大量数据的页面,客户 select 一些复选框,来自各种下拉菜单的 select 值等。有时客户花费超过 30 分钟 selecting/setting 值.当他们单击提交页面超时并将他们带到登录页面时。当您重新登录时,所有设置值都将消失。非常令人沮丧。人们会认为 select 下拉菜单、将数据输入文本框等会被视为在页面上做一些 activity 应该使会话保持活动状态。但似乎并非如此。 我尝试增加超时值但没有成功。

这是来自web.config

的代码
    <authentication mode="Forms">
        <forms loginUrl="~/public/Login.aspx" slidingExpiration="true" timeout="200" protection="All" name="SampleApp"/>
    </authentication>
    <sessionState mode="InProc" cookieless="false" timeout="200"/>
    <httpRuntime maxRequestLength="204800" executionTimeout="3600" />

我们还设置了带有加密密钥的 machinekey 标签。

感谢任何帮助。 提前致谢。

在ASP.Net中,任何不涉及posting/sending数据到网络服务器的client-sideactivity对表单身份验证滑动过期超时没有影响。因此,如果您的用户只是简单地在下拉列表中选择值而没有回发和滚动 big 页面,则不会延长超时期限。

但是,如果这是一个问题,那么您可以编写一个空的 asmx Web 服务方法,它不执行任何操作并且 returns 无效。然后,您可以使用 JavaScript 间隔计时器,即 setInterval,每 5 分钟从页面的 JavaScript 代码中调用一次。此调用将向 Web 服务器发送请求,您的用户不会像现在这样超时。此外,此调用将非常轻松快捷,您的用户永远不会知道它正在发生。

增加 FormsAuthenticationTicket 中的 cookie 超时期限 class,问题消失了。 谢谢大家