ASP.NET - 会话存储在SQL Server中时跨服务器的不同SessionId

Var*_*ant 5 asp.net iis-7 session-cookies aspstate

我使用SQL Server数据库管理2个生产Web服务器上的共享会话状态.
最近我意识到(我几乎可以肯定,事实并非如此),当从服务器跳转到服务器时,会话并不真正共享.

两台服务器在同一域上运行相同的网站,并使用硬件负载平衡器进行平衡.两者都在IIS7下运行.在两个服务器中,ASP.NET状态服务正在运行.

在检查HTTP标头并使用SQL事件探查器捕获进行交叉引用时,我发现了我认为可能存在的问题.

我的cookie中的SessionId值是一个24个字符的字符串,例如: y4hfairc2xbwlupkdsqpv0nz

ASPState数据库收到并存储在那里的SessionID 更长,并且具有服务器特定的8字符后缀.例如,2476b033或者2b7731d2在数据库中存储的所有会话中保持一致.
因此,SessionID看起来像:y4hfairc2xbwlupkdsqpv0nz2476b033y4hfairc2xbwlupkdsqpv0nz2b7731d2

显然,因为会话不是共享的,每个服务器都维护自己的会话状态.

有人使用过类似的配置吗?

谢谢

更新

事实证明:SQL Server中保存的SessionId与asp.net运行时生成的SessionId不同,额外的字符是IIS AppID.现在我必须找出如何更改它,以便两个服务器匹配.到目前为止没有运气.
任何人?

Var*_*ant 3

为了完整性回答我自己的问题。

感谢这个: https: //serverfault.com/questions/288981/load-balanced-iis-7-5-web-server-asp-net-session-state-problem

我找到了如何匹配 AppID。

现在一切似乎都进展顺利。