实现ASP.NET网站之间的单点登陆(跨域共享Session)

本文详细介绍了如何实现不同ASP.NET Web应用之间的单点登录(SSO)和Session共享,通过利用SQL Server存储进程状态。首先,需要在SQL Server上创建ASPState数据库,然后使用aspnet_regsql.exe工具注册会话状态。接着,通过修改存储过程`TempGetAppID`以实现应用程序间的Session共享。最后,配置web.config文件中的sessionState元素以使用SQL Server模式,并确保所有参与共享的应用程序使用相同AppId。此外,还讨论了处理不支持序列化对象的问题和跨项目Session共享的挑战。
摘要由CSDN通过智能技术生成

本文实现不同的WebSite(必须是ASP.NET 应用程序)之间共享Session依据的是使用进程外 SQL Server 数据库来存储状态信息。

 

为了方便理解,下面对本文中要使用的对象进行定义:

Website1:  dealer      (由VS2003 .net framework v1.1.4322开发)

Website2:  DealerV2           (VS2010 .net framework v4.0.30319开发)

(dealerDealerV2都是ASP.NET 应用程序)

 

将会话状态保存到SQL SERVERASP.NET 应用程序的一个特有的属性(侧面证明微软确实很牛X),但这需要在ASP.NET 应用程序的配置文件web.config中对sessionState 元素进行配置,这个配置方法我将放在第三部分进行说明,现在了解一下sessionState元素的作用

 

以下内容来自MSDN :

sessionState 元素配置当前应用程序的会话状态设置。

新客户端在开始与 Web 应用程序交互时,会发出一个会话 ID,并且该 ID 将与会话有效期间从同一客户端发出的所有后续请求关联。此 ID 用于在不同的请求中保持与客户端会话关联的服务器端状态。sessionState 元素控制 ASP.NET 应用程序如何为每个客户端建立并保持这种关联。

 

以下为配置dealerDealerV2共享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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值