本文实现不同的WebSite(必须是ASP.NET 应用程序)之间共享Session依据的是使用进程外 SQL Server 数据库来存储状态信息。
为了方便理解,下面对本文中要使用的对象进行定义:
Website1: dealer (由VS2003 .net framework v1.1.4322开发)
Website2: DealerV2 (由VS2010 .net framework v4.0.30319开发)
(dealer和DealerV2都是ASP.NET 应用程序)
将会话状态保存到SQL SERVER是ASP.NET 应用程序的一个特有的属性(侧面证明微软确实很牛X),但这需要在ASP.NET 应用程序的配置文件web.config中对sessionState 元素进行配置,这个配置方法我将放在第三部分进行说明,现在了解一下sessionState元素的作用
以下内容来自MSDN :
sessionState 元素配置当前应用程序的会话状态设置。
新客户端在开始与 Web 应用程序交互时,会发出一个会话 ID,并且该 ID 将与会话有效期间从同一客户端发出的所有后续请求关联。此 ID 用于在不同的请求中保持与客户端会话关联的服务器端状态。sessionState 元素控制 ASP.NET 应用程序如何为每个客户端建立并保持这种关联。
以下为配置dealer和DealerV2共享SESSION的几大步骤:
1 在SQL SERVER上建立数据库,存储服务端的会话状态信息。
执行C:/WINDOWS/Microsoft.NET/Framework/v1.1.4322/InstallPersistSqlState.sql建库脚本,这将创建一个具有存储过程的名为 ASPState 的数据库。
2 添加ASP.NET会话状态
C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/aspnet_regsql.exe -sstype c -ssadd -d ASPState -U sa -P mis -S 127.0.0.1
使用自定义的数据库ASPState来存储会话状态信息。
执行这个脚本除了注册ASP.NET会话状态SQL 服务器之外,还对ASPState中的存储过程进行了更改。
在 SQL Server 上卸载 ASP.NET 会话状态功能,命令如下:
aspnet_regsql.exe -ssremove -U sa -P mis -S 127.0.0.1
不同的应用程序会在ASPStateTempApplications