Session.Timeout 在 ASP Classic/IIS 中无法正常工作
Session.Timeout not working correctly in ASP Classic / IIS
最近我创建了一个 asp 经典网页,用户可以在其中插入他的工作时间。
其中一个请求是页面应显示一条消息,每 10 分钟登录一次。用户在一台机器上完成他的作品并且旁边有一台计算机,因此用户可能会在小时网页上处于非活动状态 5 到 60 分钟(或更多),但他仍然会留在该页面上。
为了每 10 分钟弹出一次消息,我使用了在 JQuery 中创建的计时器,一切正常。由于不确定总的非活动时间,此人希望会话超时时间较长(24 小时),以便会话状态(已登录)保持很长时间。当用户使用插入小时网页时,他被要求在不同的网页上 select 他的用户名,然后设置会话("user")。
为了实现长会话超时,我使用以下代码在根目录中创建了一个 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>
虽然出于某种原因(我计时)超时仍然是默认的 20 分钟.. 然后我也尝试在 Session.Timeout = 1420
中设置:
一个。小时插入和
的网页
b。在用户被 selected 并且正在设置会话的页面中。
虽然这没有任何效果。于是我开始研究它并在Whosebug上发现了一个类似的问题:Session Timeout in Classic ASP website
所以这让我查看了服务器上的 IIS
设置,我在其中更改了一些内容。
在网站的应用程序池中,我将 Regular Time Interval
更改为 0
:
接下来我也在我网站的Services
标签(在Sites
下)的Session Properties
中将Time-Out
更改为24 hours
:
然而这一切都没有任何效果。它仍然在 20 分钟后结束会话(至少它重置了我的会话("user")状态。
在插入网页的小时内,正在检查会话如下:
if session("user")="" then
response.redirect("ShowPage.asp?page=SelectUserTimeout")
response.end
end if
因此,当会话为空时,它将重定向到 select 用户页面,会话("user")将在该页面再次设置。尽管使用我的超时设置,如果它真的有效,这应该只在 24 小时后而不是 20 分钟后发生。
知道这里出了什么问题吗?
我顺便用了IIS 8.0
.
更新
我找到问题了!似乎我网站 Application Pool
中的 Idle Time-Out (Minutes)
仍处于默认的 20 分钟,并且出于某种原因,我的 asp 代码中的 session.timeout
没有覆盖它。
因此,对于遇到相同问题的任何人,我建议您转到 IIS
中的 Application Pools
--> 然后转到网站的应用程序池 --> 转到高级设置 - -> 进程模型 --> 并更改空闲超时
我自己发现了问题!似乎我网站 Application Pool
中的 Idle Time-Out (Minutes)
仍处于默认的 20 分钟,并且出于某种原因,我的 asp 代码中的 session.timeout
没有覆盖它。
因此,对于遇到同样问题的任何人,我建议您转到 IIS 中的应用程序池 --> 然后转到网站的应用程序池 --> 转到高级设置 --> 进程模型 -->并更改空闲超时
其实不是解决办法。我遇到了同样的问题并解决了配置应用程序池的问题:
基本配置 - 不要使用 .NET CLR。 Select 没有托管代码。
管道代码仍然是集成的。
在 Windows 10 Pro 和 Windows 2008 服务器上试过,两者都有效。
最近我创建了一个 asp 经典网页,用户可以在其中插入他的工作时间。
其中一个请求是页面应显示一条消息,每 10 分钟登录一次。用户在一台机器上完成他的作品并且旁边有一台计算机,因此用户可能会在小时网页上处于非活动状态 5 到 60 分钟(或更多),但他仍然会留在该页面上。
为了每 10 分钟弹出一次消息,我使用了在 JQuery 中创建的计时器,一切正常。由于不确定总的非活动时间,此人希望会话超时时间较长(24 小时),以便会话状态(已登录)保持很长时间。当用户使用插入小时网页时,他被要求在不同的网页上 select 他的用户名,然后设置会话("user")。
为了实现长会话超时,我使用以下代码在根目录中创建了一个 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>
虽然出于某种原因(我计时)超时仍然是默认的 20 分钟.. 然后我也尝试在 Session.Timeout = 1420
中设置:
一个。小时插入和
的网页b。在用户被 selected 并且正在设置会话的页面中。
虽然这没有任何效果。于是我开始研究它并在Whosebug上发现了一个类似的问题:Session Timeout in Classic ASP website
所以这让我查看了服务器上的 IIS
设置,我在其中更改了一些内容。
在网站的应用程序池中,我将 Regular Time Interval
更改为 0
:
接下来我也在我网站的Services
标签(在Sites
下)的Session Properties
中将Time-Out
更改为24 hours
:
然而这一切都没有任何效果。它仍然在 20 分钟后结束会话(至少它重置了我的会话("user")状态。
在插入网页的小时内,正在检查会话如下:
if session("user")="" then
response.redirect("ShowPage.asp?page=SelectUserTimeout")
response.end
end if
因此,当会话为空时,它将重定向到 select 用户页面,会话("user")将在该页面再次设置。尽管使用我的超时设置,如果它真的有效,这应该只在 24 小时后而不是 20 分钟后发生。
知道这里出了什么问题吗?
我顺便用了IIS 8.0
.
更新
我找到问题了!似乎我网站 Application Pool
中的 Idle Time-Out (Minutes)
仍处于默认的 20 分钟,并且出于某种原因,我的 asp 代码中的 session.timeout
没有覆盖它。
因此,对于遇到相同问题的任何人,我建议您转到 IIS
中的 Application Pools
--> 然后转到网站的应用程序池 --> 转到高级设置 - -> 进程模型 --> 并更改空闲超时
我自己发现了问题!似乎我网站 Application Pool
中的 Idle Time-Out (Minutes)
仍处于默认的 20 分钟,并且出于某种原因,我的 asp 代码中的 session.timeout
没有覆盖它。
因此,对于遇到同样问题的任何人,我建议您转到 IIS 中的应用程序池 --> 然后转到网站的应用程序池 --> 转到高级设置 --> 进程模型 -->并更改空闲超时
其实
基本配置 - 不要使用 .NET CLR。 Select 没有托管代码。
管道代码仍然是集成的。
在 Windows 10 Pro 和 Windows 2008 服务器上试过,两者都有效。