首页 文章

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

提问于
浏览
1

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

  • 我创建了一个自定义会话数据库,并劫持了存储过程以返回相同的appID,无论app或url如何 .

  • 我在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”cookieless =“AutoDetect”mode =“SQLServer”sqlCommandTimeout =“10”sqlConnectionString =“dbConnSession”timeout =“120”sqlConnectionRetryInterval =“2”/>

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

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

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

1 回答

  • 0

    您需要添加与两个Web配置文件相同的机器密钥 .

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

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

    有一些工具,如果你谷歌它将为你创建一个 .

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

相关问题