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

How to control session timeout after an ajax call

我有一个弹出式计时器,可以在用户的​​会话还剩 5 分钟时通知用户。然后,用户可以让它打勾并注销,或者点击一个按钮来刷新会话。该按钮触发对 Web 方法的 ajax 调用。服务器设置为有 20 分钟的超时。第一次一切都按预期进行,15 分钟过去了,计时器响起,按下按钮,拨打电话。但是在第一个 15 分钟后,我的计时器会在 5 到 30 分钟后随机出现(它仍然可以正常工作)。无论出于何种原因,session.timeout 在 ajax 调用后被赋予一个随机数。我调整了我的网络方法以包含一个 "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 分钟吗?

SessionState 超时会在每次页面请求时自动重置。

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

您需要在 JavaScript 中有一个客户端计数器。一旦Check方法转ok,就需要休息了客户端计数器为 0。