我有一个弹出计时器,可以在会话剩余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分钟?
答案 0 :(得分:1)
每个页面请求都会自动重置SessionState超时。
因此,您不需要Session.Timeout = "20"
行。
您需要在JavaScript中使用客户端计数器。 检查 方法变为 确定 后,您需要将客户端计数器置于0。