具有负载平衡的ASP.NET SQL Server会话

时间:2011-11-30 09:13:57

标签: asp.net asp.net-mvc sql-server-2008 iis-7.5

我做了些什么,但我不知道接下来我需要做什么。

我在服务器A和B中部署了相同的站点,该站点具有相同的域(http://dev.**.com)。

它们具有相同的machinekey,我在网站的web.config中声明了这一点。

会话状态指向相同的ASPState数据库。

从以下屏幕截图中可以看出,这两个网站分别有appIdAppName。这意味着这两个站点无法共享会话。

有人可以告诉我接下来需要做什么吗?任何帮助将不胜感激。

enter image description here

我是否需要声明应用程序名称?但是我应该在哪里声明它?

3 个答案:

答案 0 :(得分:2)

您可以结帐following article

答案 1 :(得分:1)

我想提出一个更简单的解决方案,但我想我晚餐时间有点晚了。 :)

IIS 7 Metabase Path当然是您正在看到的AppName,并且AppId是从它进行哈希处理的。如果两个IIS用于共享会话,并且它们的AppNames(元数据库路径)不同,则您将无法共享会话。有很多建议可以修改生成名称的存储过程,但这对我来说似乎是一个可怕的黑客攻击。虽然我喜欢Code Project的避免存储过程的解决方案,但还有一种更简单的方法!

在每台Web服务器上进入IIS 7 Manager。选择要在IIS之间共享状态的网站。单击右侧的高级设置输入 ID 的唯一值,并在每个IIS上使用相同的值。重新启动每个网站,Bob是您的叔叔。

答案 2 :(得分:0)

更改[TempGetAppID]存储过程。

示例  SET @appName = LOWER(@appName)   - > SET @appName = LOWER(APP_NAME())

APP_NAME()返回已连接的应用程序名称。 “应用程序名称= YourAppName;”设置为connectionString值。

希望这有帮助!