关于c#:IIS7会话ID与Classic ASP一起旋转

关于c#:IIS7会话ID与Classic ASP一起旋转

我正在尝试将 Classic ASP 应用程序迁移到 Windows 2008 R2 服务器上。

应用程序功能运行良好,但我遇到了会话问题。

该应用程序在会话中保留已登录的用户信息,并且我不断被淘汰,就好像会话已经过期一样。

在调试时我发现会话没有过期,但是我在一个浏览器中使用了 2-3 个不同的会话 ID。

我正在应用程序的各个页面上输出 Response.Write(Session.SessionID),我可以坐在那里反复点击刷新,观察这 2-3 个 SessionID 之间的数字随机变化。

会话仍然有效,因为当我刷新并获取会话 ID 时,页面下会显示我登录的会话 ID(因为安全检查成功),而当我获取其他会话 ID 之一时,会显示“您尚未登录,您需要登录”消息。

如果我关闭并重新打开浏览器,情况还是一样,只是 ID 集是新的。

在多台计算机上使用 IE8、Firefox 和 Chrome 时都会发生这种情况。

我尝试过的方法:
- AppPool 设置为无托管代码和经典
- 将输出缓存设置为 .asp 永不缓存
- ASP 会话属性启用并禁用 asp 会话状态并确认它影响了页面(禁用时尝试读取 Session.SessionID 时出错)

我已经尝试过以下方法以防万一,但这些方法与 ASP 会话无关:
- 禁用压缩
- 更改 ASP.Net 会话状态属性(InProc、StateServer、SQLServer、Cookies、URI 等) -

答案1

检查应用程序池的 Web 园设置。如果大于 1,则站点将在多个工作进程中运行。Classic ASP 中的会话状态取决于进程内存的单个实例。很少需要将 Web 园设置为 1 以外的任何值。

具有循环负载平衡的网络场会遇到同样的问题,但您的帖子并未表明您存在此类问题。

相关内容