6

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

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

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

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

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

4

1 回答 1

6

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

于 2013-11-13T15:20:38.193 回答