gpt4 book ai didi

asp.net - SQL Server session 状态、网络场和 IIS 配置

转载 作者:行者123 更新时间:2023-12-01 23:11:49 32 4
gpt4 key购买 nike

因此,我使用 SQL Server 2008 和临时数据库设置了 SQL Server session 状态,今天我决定查看表中的数据,只是在 ASPStateTempApplications 表中找到此数据:

AppId 应用程序名称
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。另一个应用程序也发生同样的情况。 web1 有 id 为 1 的 app2,web2 有 id 为 3 的 app2。

我的常识告诉我,网络服务器不会共享 session ,因为 session ID 使用 appid。我对么?如果是这样,为什么这个小细节在文档中不那么明显?我应该使两个网络服务器上的 id 匹配吗?

最佳答案

AppId 在创建 SessionId 期间使用,以帮助避免一个应用程序与另一个应用程序之间的冲突。它是通过计算 IIS 应用程序路径的哈希值创建的。

在您的环境中,流程可能如下所示:

  1. 服务器 A 创建一个 session ID,将其设置在 cookie 中,并将一些数据存储在相应的 session 中(ASPStateTempSessions 中的一行)。 session ID 列是通过将 session ID 与 AppID 连接起来创建的。
  2. 服务器 B 接收带有预先存在的 session ID 的请求,并使用它从 ASPStateTempSessions 表查找关联的 session 数据。如果应用ID不同,生成的 key 也会不同。

拥有不同 AppId 的多台服务器共享相同 session 的最终效果是,一台服务器创建的 ID 不会与另一台服务器创建的 ID 发生冲突,并且具有不同 AppId 的计算机不会看到彼此的 session 。

关于asp.net - SQL Server session 状态、网络场和 IIS 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1822821/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com