Session.Timeout 在 ASP Classic/IIS 中无法正常工作

Nic*_*las 3 iis session session-timeout asp-classic

最近我创建了一个 asp 经典网页,用户可以用它插入他的工作时间。

其中一个请求是该页面应显示每 10 分钟登录一次的消息。用户在一台机器上进行生产,并且在他旁边有一台计算机,因此用户可能会在小时网页上处于非活动状态 5-60 分钟(甚至更长时间),但他仍然会停留在该页面上。

为了每 10 分钟弹出一次消息,我使用了在 JQuery 中创建的计时器,这一切正常。由于总非活动时间不确定,此人希望会话超时时间较长(24 小时),以便会话状态(登录者)保持很长时间。当用户使用插入小时网页时,他被要求在不同的网页上选择他的用户名,然后设置会话(“用户”)。

为了完成长时间的会话超时,我global.asa在根目录中创建了一个文件,代码如下:

<script language="VBScript" runat="Server">
 <!-- METADATA 
        TYPE="typelib" 
        UUID="00000200-0000-0010-8000-00AA006D2EA4"
-->

Sub Session_OnStart

    ' Session timeout in minutes (24 hours)
    Session.Timeout = 1420

End Sub

</SCRIPT>
Run Code Online (Sandbox Code Playgroud)

虽然出于某种原因(我计时)超时仍然是默认的 20 分钟..然后我也尝试设置Session.Timeout = 1420

一种。小时的网页插入和

湾 在选择用户和设置会话的页面中。

不过这没有任何影响。于是我开始研究它并在stackoverflow上发现了一个类似的问题:Classic ASP网站中的会话超时

所以这让我看看我IIS在服务器上的设置,我在那里更改了一些东西。

在网站的应用程序池中,我将其更改Regular Time Interval0

在此处输入图片说明

接下来,我也改变了Time-Out24 hoursSession PropertiesServices我的网站标签(下Sites):

在此处输入图片说明

然而这一切都没有任何影响。它仍然会在 20 分钟后结束会话(至少它会重置我的会话(“用户”)状态。

在插入网页的小时内,会话正在检查如下:

if session("user")="" then 
        response.redirect("ShowPage.asp?page=SelectUserTimeout")

        response.end
end if
Run Code Online (Sandbox Code Playgroud)

因此,当会话为空时,它将重定向到选择一个用户页面,其中将再次设置会话(“用户”)。尽管使用我的超时设置,如果它真的有效,这应该只在 24 小时后发生,而不是在 20 分钟后发生。

任何想法这里出了什么问题?顺便说一句,我正在使用IIS 8.0

更新

我发现了问题!似乎我的网站的Idle Time-Out (Minutes)inApplication Pool仍然是默认的 20 分钟,出于某种原因,我session.timeout的 asp 代码没有覆盖它。

因此,对于面临同样问题的任何人,我建议您进入您Application Pools的内部IIS--> 然后转到网站的应用程序池 --> 转到高级设置 --> 流程模型 --> 并更改空闲超时

Nic*_*las 6

我自己发现了问题!似乎我的网站的Idle Time-Out (Minutes)inApplication Pool仍然是默认的 20 分钟,出于某种原因,我session.timeout的 asp 代码没有覆盖它。

因此,对于任何面临同样问题的人,我建议您转到 IIS 中的应用程序池 --> 然后转到网站的应用程序池 --> 转到高级设置 --> 进程模型 --> 并更改空闲时间-出去