访问ASP.. NET会话在SQL Server模式下跨多个应用程序



我试图从不同服务器上的多个应用程序访问存储在SQL Server中的共享会话。

我已经读过这个使用ASP的跨应用程序共享会话。. NET会话状态服务,但我没有运气。

我是这样设置网页的。两个应用程序的配置:

<sessionState 
    mode="SQLServer"
    allowCustomSqlDatabase="true"
    sqlConnectionString="Application Name=MyAppName; Data Source=MyDataSource; Initial Catalog=MyDBName; User Id=MyUser; Password=MyPassword"
    cookieless="false" 
    timeout="250" 
/>

下面是我在两个配置文件中设置的机器密钥:

<machineKey validationKey="key1" decryptionKey="key2" validation="SHA1" decryption="AES" />

两个应用程序都可以读写数据库。

我还调整了TempGetAppID存储过程,以克服应用程序名称的限制。这样,我的SessionIDs共享相同的后缀。

也就是说,我在ASPStateTempSessions表中仍然有2个不同的记录,具有不同的SessionIDs。

下面是一个例子:

3nn53mh3j0vf3mrravuda11o9c8d4bee
oljchatkqzcje1ae1b3n2pst9c8d4bee

任何想法都会很感激!

编辑1

我尝试在一个标签上同时使用Chrome和IE。

我发现问题了。

问题是我(愚蠢地)试图在两个具有不同主机名的应用程序之间共享会话。通过这种方式,SessionID被正确地存储在SQL Server中,但是,当其中一个应用程序能够在cookie中生成和存储SessionID时,由于不同的域,另一个应用程序无法读取这样的cookie。

最新更新