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

时间:2015-08-13 17:34:45

标签: session iis asp-classic session-timeout

最近我创建了一个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>

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

一个。插入小时的网页和

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

但这并没有任何效果。所以我开始研究它,并在stackoverflow上找到了一个类似的问题:Session Timeout in Classic ASP website

所以这让我看到服务器上的IIS设置,我改变了一些东西。

在网站的应用程序池中,我将Regular Time Interval更改为0

enter image description here

接下来,我还将Time-Out更改为我网站24 hours标签Session Properties上的Services Sites

enter image description here

然而,这一切都没有任何效果。它仍然在20分钟后结束会话(至少它会重置我的会话(&#34;用户&#34;)状态。

在插入网页的时间内,正在按如下方式检查会话:

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

        response.end
end if

因此,当会话为空时,它将重定向到选择用户页面,在该用户页面中将再次设置会话(&#34;用户&#34;)。虽然我的超时设置,如果它确实有效,这应该只在24小时后发生,而不是在20分钟后发生。

任何想法在这里出了什么问题? 我正按照IIS 8.0的方式使用。

更新

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

因此,对于遇到同样问题的任何人,我建议您转到Application Pools中的IIS - &gt;然后转到网站的应用程序池 - &gt;转到高级设置 - &gt;过程模型 - &gt;并改变空闲超时

2 个答案:

答案 0 :(得分:4)

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

因此,对于遇到相同问题的任何人,我建议您转到IIS中的应用程序池 - &gt;然后转到网站的应用程序池 - &gt;转到高级设置 - &gt;过程模型 - &gt;并改变空闲超时

答案 1 :(得分:0)

事实上the answer posted by the OP不是解决方案。我遇到了同样的问题并解决了配置应用程序池的问题:

基本配置 - 不要使用.NET CLR。选择No Managed Code。

管道代码仍然是集成的。

尝试在Windows 10 Pro和Windows 2008服务器上工作,并为两者工作。