我按照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数据库下。此外,我没有在事件日志中看到任何错误。谁能想到我可能做错什么?
谢谢!
答案 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上有相同的用途,所以要将它们连接在一起。