您的位置:首页 > 编程语言 > ASP

ASP.NET将Session保存到数据库中

2011-09-07 22:32 483 查看
因为ASP.NET中Session的存取机制与ASP相同,都是保存在进行中,一旦进程崩溃,所有Session信息将会丢失,所以我采取了将Session信息保存到SQL Server中,尽管还有其它的

几个方式(本文不作介绍),要将Session保存到SQL Server中,需要有以下几个步骤:

1.首先要创建用于保存Session数据的数据库,以命令行的形式用aspnet_regsql.exe来完成,具体命令为

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regsql.exe -ssadd -sstype c

-d <数据库名> -S <你的计算机名或者IP地址> -U <用户名> -P <密码>

参数说明:
-ssadd            添加对 SQLServer 模式会话状态的支持。
-sstype t|p|c     会话状态支持的类型:

t:
临时。会话状态数据存储在“tempdb”数据库中。用于管理会话的存储过程安装在“ASPState”数据库中。如果重新启动
SQL,则不保持数据。(默认)

p: 保持。会话状态数据和存储过程都存储在“ASPState”数据库中。

c: 自定义。会话状态数据和存储过程都存储在自定义数据库中。必须
指定该数据库的名称。
-d                -sstype 为“c”时使用的自定义数据库的名称。
例如,我的数据库是Marx,计算机名是HANG-PC,则可输入命令:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727>aspnet_regsql.exe -ssadd -sstype c -d Marx -S HANG-PC -U sa -P 123456


该命令是以windows验证方式,添加了sd数据库保存session数据。

2.需要修改ASP.NET web.config文件中的SessionState结点,该结点位于<system.web>下

<sessionState mode="SQLServer" allowCustomSqlDatabase="true"
sqlConnectionString="server=.;uid=sa;password=123456;initial catalog=Marx"
cookieless="false" timeout="20">
</sessionState>


这样一来,Session数据就不再是依赖于IIS进程而是保存到数据库中。可以打开sd数据库会有两个表分别为ASPStateTempSessions、ASPStateTempApplications。

参考原文:http://www.cnblogs.com/tonysuen/archive/2011/05/20/2051811.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: