ASP.net页面会话超时无法正常工作

时间:2016-01-21 00:25:51

标签: asp.net session-state

我有一个非常奇怪的问题,无论我做什么,我无法阻止页面超时。这是场景 我们有几页有大量数据,客户选择一些复选框,从各种下拉菜单中选择值等。有时候客户花费超过30分钟选择/设置值。当他们点击提交页面超时并将他们带到登录页面时。当您重新登录时,所有设定值都将消失。很沮丧。人们会认为选择下拉菜单,将数据输入文本框等会被认为是在页面上做一些应该保持会话活动的活动。但事实似乎并非如此。 我试过增加超时值但没有成功。

以下是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" />

我们还使用加密密钥设置了机器密钥标记。

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

2 个答案:

答案 0 :(得分:1)

在ASP.Net中,任何不涉及向Web服务器发布/发送数据的客户端活动都不会影响表单身份验证滑动到期超时。因此,如果您的用户只是在下拉列表中选择值而不回发并滚动浏览big页面,则不会延长超时时间。

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

答案 1 :(得分:0)

增加了FormsAuthenticationTicket类中的cookie超时时间,问题就消失了。 谢谢大家