所以我使用SQL Server 2008和临时数据库设置SQL Server会话状态,今天我决定只查看表中的数据,以便在ASPStateTempApplications表中找到它:
AppId AppName
538231025 / lm / w3svc / 1 / root
611758131 / lm / w3svc / 3 / root
802488340 / lm / w3svc / 4 / root
-940085065 / lm / w3svc / 4 / root / webapp
685293685 / lm / w3svc / 5 / root
1210055478 / lm / w3svc / 5 / root / webapp
我们有2个负载均衡的Web服务器。
当我查看两个服务器的Web应用程序的ID时,我看到web1的app1的id为4,web2的app1的id为5.同样的事情发生在另一个app上。 web1的app2的id为1,web2的app2的id为3。
我的常识告诉我,由于会话ID使用appid,因此Web服务器不会共享会话。我对么?如果是这样,为什么这个小细节在文档中不那么明显?我应该在两个Web服务器上使ID匹配吗?
答案 0 :(得分:6)
在创建SessionId期间使用AppId,以帮助避免从一个应用程序到另一个应用程序的冲突。它是通过计算IIS应用程序路径的哈希值创建的。
在您的环境中,流程可能是这样的:
使多个服务器具有共享相同会话的不同AppId的净效果是,一台服务器创建的ID不会与另一台服务器的ID冲突,具有不同AppIds的计算机将看不到彼此的会话。 / p>