经典的 ASP 会话超时困境



>我很困惑。 我们的每个员工都必须登录到我们的服务器,这将开始他们的ASP会话。 我所做的所有研究表明,我们应该能够使用session.timeout x来更改此会话持续的时间,其中 x 是我们希望会话持续的时间,默认为 20 分钟。 我已经更改了此超时,但没有任何一致的结果。

终于设置了一个函数,检查我是否每 10 秒登录一次,看看我是否可以确定一致的会话长度。 到目前为止,在8次试验中,时间从7小时到40小时不等。 我已经在chrome和Firefox浏览器中执行此操作,以查看不同的会话时间,并且它们总是在同一时间超时。 然而,同事在这些确切的时间并没有超时。

我读了一些关于global.asa的东西。 我们要么没有使用它,要么我们都没有足够了解它,不知道它在哪里。

我还阅读并尝试更改 IIS 中应用程序池的超时会话。 我从 Windows 7 开始做,大多数教程都是针对旧版本的 Windows,但我相信我找到了正确的位置,但我仍然找不到我所做的更改有任何不同。

tl;dr - 有没有办法找到经典 ASP 会话中还剩多少时间?

有几个因素会影响超时长度,并且有几个地方可以设置长度。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 中每个特定用户的初始登录时间戳和上次活动的时间戳。然后将当前时间戳与存储的数据进行比较,以确定会话是否应结束。您还可以使用这种类型的方法在设定的不活动时间后自动将客户端重定向到登录页面,或显示"您的会话已过期"样式的消息。

最新更新