我们有一个 ASP.NET 网站的问题,其中用户的会话行为很奇怪 - 会话数据出现、消失和重新出现。
我想我知道问题是什么:
因此,当用户登录站点并四处走动时,每个 HTTP 调用都可以转到任一 Web 服务器,因此根据服务器使用具有不同 ID 的会话状态记录。实际上,用户将同时拥有 2 个单独的会话实例。我相信我已经验证这是在数据库ASPStateTempSessions表,每个会话cookie ID似乎对应于2几乎相同名称的记录(其ID只有最后几个字符,我相信是基于改性剂不同的AppID从AspStateTempApplications表)在几秒钟内创建。
因此,会话状态将表现为行为不端,因为对一个会话记录所做的更改只会在该 Web 服务器上持续存在。如果用户移动到另一个负载平衡的服务器,会话值似乎会消失或恢复。
我相信解决方案是同步站点的 IIS 实例 ID(例如,将它们都设置为/W3SVC/1/Root),但我尝试在 IIS 中的高级设置下编辑该值,尽管它保存正常,但它只是使站点在该服务器上返回 404,直到我将其改回。
我为这个问题找到了一个 VBS 脚本,但它似乎只适用于 IIS 6,所以我担心尝试它。有没有其他人在 IIS 7.5 …