代码之家  ›  专栏  ›  技术社区  ›  AlfonsoML

经典asp站点中的新请求导致会话丢失

  •  4
  • AlfonsoML  · 技术社区  · 14 年前

    这不容易解释,但我会尽力的。

    使用Fiddler,我可以看到服务器突然发送了一个新的Set Cookie头,尽管请求中发送了前一个会话Cookie。

    从那一刻起,服务器将在两个会话之间随机切换,没有一个会话似乎已过期,它们保留了自己的变量,但对于用户来说,这是没有用的,因为可能会要求他登录,然后表单数据将在已登录的会话中处理。

    我能找出什么问题?

    谢谢。

    按照Aaron D的建议显示机器名。总是显示相同的名称,但是我已经将应用程序的开始时间存储在全球.asa:

    Sub Application_OnStart()
        Application("Start") = now()
    End Sub
    

    结果表明,当在测试页面中显示该信息时,它确实会随着检测到的会话的变化而变化。所以有两个服务器(同名)或者运行两次应用程序。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Aaron D    14 年前

    我有一些想法,但没有明确的。

    1. 有些请求是通过HTTPS的,有些是通过HTTP的?Cookie是否设置为仅通过安全连接传输?

    2. 这是一个不太常见的,但公司托管您的网站在多个服务器上分布负载?您可以通过创建此处指定的页面来判断: http://mentaljetsam.wordpress.com/2008/01/29/classic-asp-code-to-print-current-server-name/
      如果事实证明是这样,那么使用的解决方案是将会话状态模型从“InProc”更改为使用共享资源(如数据库)。

    3. 你确定它会在会话之间切换你,而不是让你的会话过期吗?可能是你的应用程序正在重新启动(基于你的编辑),这会终止你的会话,但缓存的结果使它看起来仍然有效。你能试着用像Fiddler这样的HTTP流量监视程序进行硬刷新和/或检查结果吗?这可能会给您一个更好的线索,让您知道哪些请求实际上是通过网络进行的。