Jam*_*ack 14 iis windows-server-2008 asp.net iis-7.5
我们有一个 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 上遇到过这种情况,您是如何解决的?
编辑/解决方案
我的错误是我在 IIS 中更改了站点实例 ID 后忘记重新启动 IIS。此后,更新 ID 并在两个 Web 服务器上同步 ASP.NET 会话。
完整说明:
c:\windows\system32\iisreset /restart
)对 LIVE2 执行相同操作(确保站点 ID 与 LIVE1 上的相同)
请注意,站点 ID 确实会影响站点文件的位置,例如日志文件文件夹会变成C:\inetpub\logs\LogFiles\W3SVC10
。
还要注意的是,你可以手动编辑的网站做这些改变的id属性在IIS的每台服务器上的配置文件:C:\Windows\System32\inetsrv\config\applicationHost.config
。需要管理员权限,之后仍需要重置。
jis*_*shi 11
从您的问题来看,您似乎有一个中央会话状态服务器(DB?)来跟踪会话数据?
您还必须同步用于加密任何表单身份验证等的机器密钥才能工作。这也可能会影响会话标识,我不确定。
此外,您应该利用机器之间的共享配置,它本身可能会解决不同机器密钥的问题。
编辑:当您更改站点 ID 时,您是否尝试重新启动 IIS 管理器以查看 webroot 是否已更改?也许配置与 ID 相关联,这意味着 ID 的更改也会修改文档根目录等内容
归档时间: |
|
查看次数: |
22882 次 |
最近记录: |