我很困惑。我们的每位员工都必须登录我们的服务器,开始他们的ASP会话。我所做的所有研究表明,我们应该能够使用session.timeout x
更改此会话的持续时间,其中x是我们希望会话持续的分钟数,默认为20分钟。我已经改变了这个超时而没有任何一致的结果。
我终于设置了一个函数,检查我是否每10秒登录一次,看看我是否能确定一致的会话长度。到目前为止,在8次试验中,时间从7小时到40小时不等。我已经在chrome和firefox浏览器中完成了这个操作,以查看不同的会话时间,并且总是在同一时间超时。但是,同事们并没有在这些确切的时间里超时。
我读了一些关于global.asa的内容。我们要么没有使用它,要么我们都不了解它,知道它在哪里。
我也读过并尝试更改IIS中应用程序池的超时会话。我正在从Windows 7开始,大多数教程都是针对旧版本的Windows,但我相信我找到了正确的位置,但我仍然无法发现我所做的更改有所不同。
tl; dr - 有没有办法找到经典ASP会话还剩多少时间?
答案 0 :(得分:5)
有几件事可能会影响超时长度,有几个地方可以设置长度。 IIS具有自己的默认值,也可以在站点的基础上设置。您也可以使用您建议的session.timeout
在应用程序代码中进行设置。
如果您创建了一个函数来检查是否存在活动会话,则函数本身可能会在每次触发时保持会话处于活动状态。这就是为什么你会遇到如此长的会话超时。
如果用户在指定的时间段内未在应用程序中请求或刷新页面,则会话自动结束。
global.asa是您可以创建并包含在Web应用程序的根文件夹中的文件。如果你想要或需要一个,那就创建它。
格式应该是这样的;
<script language="vbscript" runat="server">
sub Application_OnStart
'some code
end sub
sub Application_OnEnd
'some code
end sub
sub Session_OnStart
'some code
end sub
sub Session_OnEnd
'some code
end sub
</script>
要控制会话的长度,您可以指定一个值;
Sub Application_OnStart
Session.Timeout = 30 '30 mins
End Sub
我发现并且现在使用的一个更准确的解决方案是记录数据库或cookie中每个特定用户的最后一次活动的初始登录时间戳和时间戳。然后将当前时间戳与存储的数据进行比较,以确定会话是否应该结束。您还可以使用此类方法在设置的不活动时间后自动将客户端重定向到登录页面,或者显示“您的会话已过期”样式消息。