如何在ajax调用后控制会话超时

时间:2015-01-07 14:52:08

标签: asp.net session timer

我有一个弹出计时器,可以在会话剩余5分钟时通知用户。然后,用户可以让它记下并注销,或点击按钮刷新会话。该按钮触发对Web方法的ajax调用。服务器设置为超时20分钟。第一次通过时,一切都按预期工作,15分钟过去,计时器启动,按钮被按下通话。但是在前15分钟后,我的计时器会在5到30分钟后随机出现(它仍能正常工作)。无论出于何种原因,在ajax调用之后会给session.timeout一个随机数。我已经调整了我的网络方法,以包含" session.timeout ="如下:

<WebMethod(EnableSession:=True)> _
    <Script.Services.ScriptMethod(UseHttpGet:=False)> _
    Public Function Check() As String
        If HttpContext.Current.Session("strValid") Is Nothing Then
            Return "expired"
        Else
            Session.Timeout = "20"
            Return "ok"
        End If
    End Function    

这仍然会导致随机弹出窗口。如果我使用会话扩展器,然后切换到应用程序中的其他页面,则计时器的行为与第一个弹出窗口的预期相同,然后再回到随机性。

通过javaScript调用该方法,不使用window.interval。

知道每次刷新会话时如何确保会话计时器设置为20分钟?

1 个答案:

答案 0 :(得分:1)

每个页面请求都会自动重置SessionState超时。

因此,您不需要Session.Timeout = "20"行。

您需要在JavaScript中使用客户端计数器。 检查 方法变为 确定 后,您需要将客户端计数器置于0。