session - 经典的 ASP session 超时问题

标签 session iis asp-classic iis-7.5 session-timeout

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

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

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

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

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

最佳答案

有几件事会影响超时长度以及可以设置长度的几个地方。 IIS 有它自己的默认值,也可以在逐个站点的基础上进行设置。您也可以使用 session.timeout 在应用程序代码中设置它。就像你建议的那样。

如果您创建了一个函数来检查是否存在事件 session ,则该函数本身可能会在每次触发时使 session 保持事件状态。这就是为什么您会遇到如此长的 session 超时。

A session automatically ends if a user has not requested or refreshed a page in an application for a specified period of time.



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>

为了控制 session 的长度,您可以指定一个值;
Sub Application_OnStart
    Session.Timeout = 30 '30 mins
End Sub

我发现并现在使用的更准确的解决方案之一是在数据库或 cookie 中记录每个特定用户的初始登录时间戳和最后事件的时间戳。然后将当前时间戳与存储的数据进行比较,以确定 session 是否应该结束。您还可以使用这种类型的方法在设置的不活动时间后自动将客户端重定向到登录页面,或显示“您的 session 已过期”样式消息。

关于session - 经典的 ASP session 超时问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19956109/

相关文章:

php - 升级到 PHP 7 后 session 不起作用

未在 Edge(点网核心)上设置 session cookie

asp.net - ASP.Net 2中上传的文件在哪里?

html - 如何设置从数据库中检索到的 <a> 样式?

visual-studio-2010 - 尽管字符集正确,德语元音仍显示错误

php - 从mysql中选择匹配的 session 到表

http - 如何使用 Grails Http session

asp.net - IIS:空闲超时与回收

asp.net - 为 IIS 上托管的 WCF 服务实现自签名 X509 证书

javascript - 在经典 asp : what's wrong with "this"? 中使用服务器端 javascript