我正在研究在IIS 7.5上运行的ASP经典应用程序。我试图在用户的窗口上抛出一个弹出覆盖图,如果他们的会话超时而没有他们不必与机器交互(例如,如果他们离开机器而忘记它,我想要这个弹出窗口当他们回来时等待他们)。
我实现了一个后台setInverval
函数,该函数使用jQuery向名为ajax-check-session.asp
的服务器上的页面发送ajax请求。
ajax-check-session.asp
除了检查会话是否仍然存在以及Response.Write
分别为1
或0
之外什么都不做。
会话检查有效,我可以从其他选项卡注销,弹出窗口将显示在使用该会话的任何其他选项卡中。但是,如果我只将标签单独保留20分钟(Session.Timeout
值),弹出窗口就不会显示出来。我假设这是因为对ajax-check-session.asp
的ajax请求每3秒刷新一次会话,因此永远不会超时。
以下是ajax-check-session.asp
的代码:
<%Option Explicit
Response.Write LoggedIn()
Function LoggedIn
Dim strUsername
strUsername = Session("username")
If strUsername = "" Or isNull(strUsername) Then
LoggedIn = 0
Else
LoggedIn = 1
End If
End Function
%>
有没有人知道如果每隔3秒 访问此页面,事实上,我的会话是否会超时?如果是这样,您是否有任何关于替代技术的建议,以实现我的目标,或修复我的代码/服务器,这将允许此页面不刷新会话?
我尝试在此页面上使用<%@EnableSessionState=False%>
,但我无法想出仍然可以检查会话是否已过期且此设置为false的方法,因为这似乎会撤消对{{{{}的访问权限1}}完全。
答案 0 :(得分:1)
当你打电话Session("username")
时它是正确的,事实上你正在刷新Session Object
本身,因为你永远不会看到弹出窗口。
另一种方法是使用Global.ASA
文件来实现函数Session_OnStart和Session_OnEnd,以便在创建SessionID
和date/time
时存储它们在数据库中,您的脚本可以检查记录。
您可以使用这两个功能插入和删除表格中的会话信息。