Session如何保存在sql数据库中
aspnet中,session默认以inproc模式存储,也就是保存在iis进程中,这样有个优点就是效率⾼,但不利于为本负载均衡扩展。可以把session信息保存在SQL Server中,据说,该种⽅式⽐起inproc性能损失为10%-20%。如何实现呢,主要分两步介绍:
1、初始化SQL Server中的状态数据库
ASP.NET SQL Server 提供注册⼯具,⽤于创建供 ASP.NET 中的 SQL Server 提供程序使⽤的 Microsoft SQL Server 数据库。位于  /%windir%/Microsoft.NET/Framework/<versionNumber>/ ⽬录下。如果⿇烦,可以直接⽤visual studio tools 的命令提⽰⼯具中直接输⼊使⽤。⽤法如下:
<options>
可以⽤如下的语法来添加默认session数据库ASPState
-S localhost -U sa -P why1234? -ssadd -sstype p
-S,-U/-P
必须是⼤写,分别表⽰数据库服务器,⽤户名和密码。
-ssadd / –ssremove 参数:session如何设置和读取
-ssadd表⽰是添加Session数据库, -ssremove表⽰移除Session数据库.
sstype 参数:
选项说明
t将会话数据存储到 SQL Server tempdb 数据库中。这是默认设置。如果将会话数
据存储到 tempdb 数据库中,则在重新启动 SQL Server 时将丢失会话数据。
p将会话数据存储到 ASPState 数据库中,⽽不是存储到 tempdb 数据库中。
c将会话数据存储到⾃定义数据库中。如果指定 c 选项,则还必须使⽤ -d 选项包
括⾃定义数据库的名称。
创建⾃定义数据库myAppState,可以⽤如下的语法:
-S localhost -U sa -P why1234? -ssadd -sstype c -d myAppState
2、配置webconfig
在webconfig的  <system.web>节下添加如下配置:
<sessionState mode="SQLServer"  sqlConnectionString="server=localhost; uid=sa; pwd=123456;"/>
如果在初始化数据库的时候,创建了⾃定义数据库可以⽤类似于如下的的配置:
<sessionState mode="SQLServer"  allowCustomSqlDatabase="true" sqlConnectionString="server=localhost;
DataBase=myAspState;uid=sa; pwd=123456;"/>
通过以上两步的设置,已经可以了。详细情况请参阅msdn。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。