在数据库中保存会话状态

Introduction:
通过把会话数据保存在SQL Server数据库中,也可以在进程外来管理会话状态。这个方法的优势在于可以把多台数据库服务器做成集群,以便在其中某台服务器出问题时,另外一台数据库服务器可以接管状态管理

Step1
加载C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\installsqlstate.sql
执行脚本后会生成ASPState数据库,在tempdb中也会生成两张表
dbo.ASPStateTempSessions,ASPStateTempApplications

Step2
在web.config
修改sessionstate配置项


 

None.gif < sessionState 
None.gif
None.gif            mode
= " SQLServer " // 我们一般使用InProc mode
None.gif

None.gif            sqlConnectionString
= " data source=127.0.0.1;UID=sa;PWD=secret "
None.gif
None.gif
/>
None.gif

Step3
重启SQL Server服务,开启SQL Server Agent
在执行installsqlstate.sql脚本时会创建一个job,Agent会自动帮我们清理过期的session
再我们在代码中使用session时
如:Session[“test”] = “test”;
会在tempdb中的ASPStateTempSessions表产生一笔数据
如图:

sessionstate1.gif
我写了个试验
None.gif if (Session[ " test " !=   null )
None.gif    str 
=  Session[ " test " ].ToString();
None.gif
if  ( !  IsPostBack ) 
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    Session[
"test"= "test";
ExpandedBlockEnd.gif}

None.gif
None.gif

 

当把ASPStateTempSessions中的数据删除时,就无法访问Session[“test”]中的值了
这种在进程外管理session的方法提高了我们对session的控制,为我们提供了另一种思路,很不错
参考书目:
ASP.Net Unleashed 2nd


转载于:https://www.cnblogs.com/bigenius/archive/2006/02/16/331866.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值