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

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

Step2
在web.config
修改sessionstate配置项


 

<sessionState 

            mode
="SQLServer"//我们一般使用InProc mode

            sqlConnectionString
="data source=127.0.0.1;UID=sa;PWD=secret"

/>

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


我写了个试验

if(Session["test"!= null)
    str 
= Session["test"].ToString();
if (! IsPostBack ) 
{
    Session[
"test"= "test";
}


 

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