在IIS8上的两个网站之间共享ASP.Net会话不起作用

时间:2015-05-20 17:48:46

标签: asp.net session iis-7 session-state iis-8.5

我需要在同一个IIS上的两个网站之间共享asp.net会话。

  • 我创建了一个自定义会话数据库,并劫持了存储过程以返回相同的appID,无论应用程序或网址如何。

  • 我在web.config中为db创建了一个连接字符串:

  

< add name =" dbConnSession" connectionString =" server = xx.xxx.xx.xx .; database = ASPNETSession; User Id = xxx; Password = xxx"的providerName =" System.Data.SqlClient的" />

  • 然后我定义了会话状态:
  

< sessionState allowCustomSqlDatabase =" true" Cookie的="自动检测"模式=" SQLServer的" sqlCommandTimeout =" 10" sqlConnectionString =" dbConnSession"超时=" 120" sqlConnectionRetryInterval =" 2" />

我使用IIS7在我的Win7机器上开发了这些网站,并且登录系统完美运行。我可以从1个站点登录,转到其他站点并保持登录状态。

我将2个站点移动到Web服务器(带有IIS8.5的Windows 2012),并且共享会话不起作用。网站根本不共享会话。我在一个站点上设置会话值并尝试在另一个站点上查看它,并且会话值返回为null。完全相同的测试页面适用于IIS7。

有谁知道为什么IIS8.5在IIS7上有问题?

1 个答案:

答案 0 :(得分:0)

您需要添加与两个Web配置文件相同的计算机密钥。

如果进入 system.web ,看起来像这样:

<machineKey validationKey="[your key]" decryptionKey="[dec key]" validation="SHA1" />

如果您使用谷歌,它会为您创建一个工具。

您需要此密钥的原因有几个,主要是因为服务器可能有不同的路径指向您编码所在的文件夹或不同的IIS设置。