Session ASP会话超时前过期设置

Session ASP会话超时前过期设置,session,asp-classic,Session,Asp Classic,我的一些旧程序正在使用ASP(不是ASP.Net),即使我设置了长会话过期时间,例如20分钟,有时在短时间内(例如几分钟内),我仍然会注意到会话过期错误框– 空闲时间太多,请重新登录 有进一步分析的想法吗?不确定是我的代码错误还是服务器(浏览器)配置问题,因为并非所有客户机/服务器组合都会遇到这个奇怪的问题 “会话过期”框由我的代码触发: <% if session("timeToken") = "" then %> <script language = "JavaS

我的一些旧程序正在使用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
%>

基于您的更新,有几个想法:

  • 您的
    会话(“timeToken”)
    可能为空还有其他原因吗?另一段代码在某处,或者变量在某处拼写错误

  • session(“timeToken”)
    的实际值在代码中是如何变化的?会话开始时是否已设置?它是否定期更新?它有什么价值

  • 您编写的代码似乎很好,因此如果不是代码问题,则可能是真正的会话问题。。。只是一些需要先检查的东西

    更新:

    • ASP会话状态通常使用Cookie进行维护-您可以检查客户端是否启用了Cookie吗
    • ASP应用程序是否由多台服务器提供服务?如果它是从web场或集群提供的,则需要确保会话状态可以在机器之间保持,或者用户的会话是“粘性的”——也就是说,它始终由同一台服务器提供服务

    更多信息和帮助可在此处找到:

    确保您的站点位于相同的区分大小写的文件夹中

    e、 g

    没有与相同的会话cookie


    这可能是IIS对应用程序seision超时的限制

    试试这个:

  • 右键单击IIS中的应用程序文件夹
  • 然后转到属性->虚拟目录选项卡->然后单击右下角的配置按钮
  • 如果已禁用,则首先单击“创建”按钮创建应用程序
  • 在配置窗口下,单击选项选项卡,您将发现会话超时默认设置为20(分钟)

  • 希望这是对你祈祷的回答:)

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

    应用程序池可以配置的各种不同原因将触发循环


    当您有未接受的超时时,请检查事件日志,是否有异常情况?

    您提供的代码在哪里?如果客户端是javascript/vbscript,你就不能获取会话变量,如果是服务器端,你就不能发出警报…@Damovisa,我已经发布了我的代码。有什么想法吗?明白了-我刷新了,你更新了代码:)你是什么意思“2.会话(“timeToken”)的实际值是如何变化的?”--在什么情况下,它会自动从我的代码中更改?如果您能让我知道IIS或操作系统或浏览器端的任何影响会话过期的设置,我将不胜感激?很抱歉延迟-我在我的answer@Damovisa,还有一个问题。检查会话变量是否为String.Empty以确定会话是否如我在原始代码中所示过期,这是一个优雅的代码吗?我之所以有这种困惑,是因为我没有找到正式文档提到这是一种优雅的方式。我的客户机启用了会话,而我使用单个web服务器托管web应用程序,使用进程内会话管理。首先我听说过这种行为?你能提供一些参考资料吗?“许多Web浏览器,包括Microsoft Internet Explorer 4.0版或更高版本,以及Netscape浏览器,都保留了cookie路径的情况。”还有当IE 4问世,我的ASP应用程序被破坏时,许许多多的痛苦经历;)@u07ch,我们正在使用IE7或IE8。似乎这个问题不适用于IE 7或IE 8?我对你的回答感兴趣,一些问题/评论,1。为什么应用程序池回收会使会话超时(我认为IIS应该设计得很好,即存在实时会话,不应该使应用程序池回收),以及如何检查IIS中的当前超时设置?2.从Windows事件日志或IIS日志,它是否能够检查会话超时问题是否由应用程序池回收引起?3.“当您有未接受的超时时,请检查事件日志”--IIS的事件日志?是操作系统还是我的应用程序?@George:1。IIS以这种方式超时是不错的设计。应用程序池对其中运行的应用程序种类了解很少,这是一个很好的设计。因此,不了解特定于应用程序的特性(如会话管理)是非常恰当的。在“IIS 6管理器打开应用程序池”分支中,选择池上的属性,在“性能”选项卡上有一个空闲超时部分。在IIS 7中单击高级设置。。。选择应用程序池后,在“操作”窗格中,空闲超时在“流程模型”类别中。@George:2和3。不明确,但会记录意外回收。在IIS7中,应用程序池的高级设置还具有生成回收事件日志条目值,您可以在其中配置回收事件生成日志的内容。如果IIS 6有这样一个功能,但它没有在我能看到的管理UI中公开,我不会感到惊讶。@AnthonyWJones,1。如果我在代码中显式设置了会话超时,并且在IIS concole中配置了会话超时,并且还配置了应用程序池空闲时间,那么哪个会生效?2.我认为应用程序池重新启动或闲置一段时间,会话将全部过期,对吗?如果是,我感兴趣的是应用程序池将如何处理idl