【发布时间】:2012-10-08 14:33:06
【问题描述】:
我遇到了一个经典 ASP 页面的问题,我只是在 3 天后无法解决。
页面正在使用 Sessions - 有时会发生 ASPSESSIONID cookie 在 Request.ServerVariables("HTTP_COOKIE") 中设置了两次。这会导致 ASP 页面在刷新页面时在两个会话之间跳转。
我已经编写了一个测试页面,它输出当前的 SessionId、服务器软件和 HTTP_COOKIE 值。
样本输出:
会话 ID:308542840
会话超时:20 分钟
服务器软件:Microsoft-IIS/6.0
HTTP_COOKIE:ASPSESSIONIDQCBATRAD=MBHHDGCBGGBJBMAEGLDAJLGF; ASPSESSIONIDQCCDTTCB=PGHPDGCBPLKALGGKIPOFIGDM
为什么有两个 ASPSESSIONID? 当我刷新页面时,它会随机输出两个会话 ID 之一。
这是一个显示 IE9 中的问题的截屏视频: http://prinz-alexander.at/asp_test.avi
这个错误在ie8和ie9中经常出现。
只需执行以下操作即可重现问题:
- 完全关闭 IE8 或 IE9
- 启动IE8或IE9并打开http://www.pfiffikus.at/pfiffikus/tests/
- 页面加载后立即刷新页面多次
如果您重复此步骤,则 HTTP_COOKIE 会随机(并非总是)填充两个不同的 ASPSESSIONID。
asp 测试文件只输出mentiod 值,源代码中没有其他内容。
这是asp测试文件的代码:
<% If trim(Session("test_val")) = "" Then
Dim my_num
Randomize
number = Int((rnd*1000))+1
Session("test_val") = number
End If
%>
<b>Session ID:</b>
<% response.write(Session.SessionId) %><br /><br />
<b>Session("test_val"):</b>
<% response.write(Session("test_val")) %><br /><br />
<b>Session Timeout:</b>
<% response.write(Session.Timeout) %> minutes<br /><br />
<b>Server Software:</b>
<% response.write(Request.ServerVariables("SERVER_SOFTWARE")) %><br /> <br />
<b>HTTP_COOKIE:</b> <% response.write(Request.ServerVariables("HTTP_COOKIE")) %>
如何避免 cookie 中出现多个 ASPSESSIONId?
感谢您的帮助!
【问题讨论】:
-
张贴一些您已分配会话的代码。
-
我已将代码添加到我最初的问题中...
-
您配置了一个网络花园(具有多个进程的应用程序池)?
-
@AnthonyWJones 我只是虚拟主机的用户,但我没有管理权限。我还能查出是否配置了网络花园吗?为什么这种情况会出现问题,您会建议什么配置?
标签: session iis cookies asp-classic iis-6