我们有一个运行在负载平衡服务器实例上的应用程序,因此配置为使用在我们的一个数据库服务器上运行的ASP.NET会话状态服务。虽然我们的应用程序的两个实例都可以成功连接到状态服务器,但会话状态数据的更改不会反映在它们之间。 FI,如果我在服务器A上调用Session.Add('SomeKey', SomeData)
,那么如果我尝试访问服务器B上的Session['SomeKey']
,则不会反映这一点。
Session.SessionID在两台服务器上返回相同的值,我检查过它们都使用在machine.config的machinekey部分配置的相同validationkey和decryptionkey值。我甚至尝试在应用程序web.config中指定这些值。
我应该注意哪些可能导致这些症状的其他事项,以及人们可以推荐哪些步骤来帮助调试此问题?
答案 0 :(得分:5)
这有用吗:
http://support.microsoft.com/kb/325056?
维持会话状态 Web场中的不同Web服务器, 网站的应用程序路径 (例如,\ LM \ W3SVC \ 2)中 Microsoft Internet信息 服务(IIS)元数据库必须是 同样适用于所有的Web服务器 网络农场。案件也需要 因为应用程序路径相同 区分大小写。
答案 1 :(得分:3)
我最终使用iiscnfg / copy从一台服务器到另一台服务器执行IIS元数据库的完整副本,从而解决了这个问题。感谢E.J Brennan让我走上荣耀之路。