超时设置前ASP会话到期

时间:2009-06-04 10:26:29

标签: session asp-classic

我的一些遗留程序正在使用ASP(不是ASP.Net),即使我设置了很长的会话过期时间,例如20分钟,有时在短时间内(例如在几分钟内)我会仍然会注意到会话过期错误框 -

  

“空闲时间过长,请重新登录。”

还有什么想法可以进一步分析?不确定这是我的代码错误还是服务器(浏览器)配置问题,因为并非所有客户端/服务器组合都遇到这个奇怪的问题。

会话过期框由我的代码触发:

<%
    if session("timeToken") = "" then
%>

<script language = "JavaScript">
<!--
window.alert ("too much idle time, please login again");
//-->
</script>
<%
response.End()
end if
%>

4 个答案:

答案 0 :(得分:1)

基于您的更新的一些想法:

  1. 您的session("timeToken")可能是空的还有其他原因吗?某个地方的另一段代码或者变量在某处拼错了?

  2. session("timeToken")的实际值如何在代码中发生变化?是否在会话开始时设置?是否定期更新?它存储了什么价值?

  3. 您编写的代码似乎没问题,所以如果它不是代码问题,那么它可能会成为真正的会话问题......首先要检查一些事情。

    <强>更新

    • ASP会话状态通常使用cookie维护 - 您是否可以检查客户端是否启用了cookie?
    • ASP应用程序是否由多个服务器提供服务?如果它是从Web场或群集提供的,您需要确保会话状态可以在整个计算机上保留,或者用户的会话是“粘性的” - 也就是说,它始终由同一服务器提供服务。

    可在此处找到更多信息和帮助:http://msdn.microsoft.com/en-us/library/ms972338.aspx

答案 1 :(得分:1)

确保您的网站停留在相同的区分大小写的文件夹

e.g。

http://myserver.com/MyWebSite/

没有相同的会话Cookie

http://myserver.com/mywebsite/

所以它会让你退出。

答案 2 :(得分:1)

可能是您的应用程序延迟超时的IIS限制。

试试这个:

  1. 右键单击IIS中的app文件夹
  2. 然后去属性 - &gt;虚拟目录标签 - &gt;然后是右下角的配置按钮
  3. 如果已禁用,则首先单击创建
  4. 按钮创建应用程序
  5. 在配置窗口下单击选项选项卡,您会发现SESSION TIMEOUT默认设置为20(分钟)
  6. 希望这是你祷告的呐喊:)

答案 3 :(得分:1)

检查您的应用运行的应用程序池是否由于某种原因而无法回收。例如,它有一个更积极的空闲超时(在测试场景中,您可能是唯一一个使用该应用程序,因此您不使用它不仅构成空闲会话而且构成空闲应用程序。)

可以为其配置应用程序池的各种不同原因将触发回收。

当你有一个未被发现的超时时检查事件日志,那里看起来有什么异常吗?