用于管理ASP.NET会话的SQL Server不起作用

时间:2012-05-30 21:42:05

标签: asp.net iis-7 sql-server-2008-r2 session-state

我按照How to configure SQL Server to manage ASP.NET sessions中的指示创建ASPState数据库。 我在IIS 7中有2个Web应用程序。在IIS Web应用程序设置中,我转到“会话状态”并将会话状态设置为“SQL Server”并提供连接字符串。 在每个Web应用程序web.config中,我添加

<sessionState
       mode="SQLServer"
       allowCustomSqlDatabase="false"
       sqlConnectionString="data source=server;user id=user;password=password"
       cookieless="false"
       timeout="7200"
/>

我创建了一个会话,

Session["Data"] = "test"

在Web App A中,在同一浏览器中转到Web App B进行打印

Response.Write(Session["Data"]);

它显示没有。我可以看到表中有数据:ASPStateTempApplications和ASPStateTempSessions在ASPState数据库下。此外,我没有在事件日志中看到任何错误。谁能想到我可能做错什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

You can not get session that belongs to App-A from App-B and vice versa.

会话与cookie连接,app-a和app-b之间的cookie不同,是随机的。即使设置了一些如何相同的cookie然后接下来数据库连接会话与应用程序ID,每个应用程序也是不同的。

因此,即使您拥有相同的数据库,应用程序ID也不同,并且Cookie不同,您无法从a到b进行会话。

归档的唯一可能方法是制作自定义会话代码,有些人知道你在app-A和app-B上有相同的用途,所以要将它们连接在一起。