使用SQL Server存储ASP.NET Session变量

在基于NLB(网络负载平衡)环境下的ASP.NET Web应用程序开发,我们需要将Session存储在数据库中供多个Web应用程序调用,以下为配置方法及注意事项。

  1.创建用于存储ASP.NET Session的数据库(远程、本地皆可,使用数据库用户身份认证)


  在Windows\Microsoft.NET\Framework/V2.0.50727 (如果是.net 4.0 切换到相应目录)目录下使用如下命令:


  aspnet_regsql.exe -S <SQL Server IP> -U <User Name> -P <Password> -ssadd -sstype c -d <Database Name>

       例如: aspnet_regsql.exe -S 192.168.7.8 -U sa -P 1q2w#E$R -ssadd -sstype c -d An.Epass.ToolKit


  命令执行后就会成功建立起用于存储ASP.NET Session变量的数据库了。

  2.Web.Config文件配置项


  我们需要在ASP.NET Web应用程序中的Web.Config文件修改sessionState配置项以使Session状态数据库生效。


配置节点如下:

以下为引用的内容:
<sessionState mode="SQLServer"
            sqlConnectionString="server=<Server IP>;database=<Database Name>;uid=<User Name>;pwd=<Password>;"
allowCustomSqlDatabase="True"
            cookieless="false" 
            timeout="20" />

  3.注意在进行系统测试(主要是负载测试)的时候,因为数据库访问负载的增加,需要调整SQL Server相应超时的配置项以适应负载。(默认值为10,请适度进行调整。)

  ASP.NET Session状态数据库数据模型
  1.ASPStateTempSessions表定义

列名 类型 描述
SessionId nvarchar(88) Session ID + application ID
Created datetime Date and time session was created (UTC)
Expires datetime Date and time session expires (UTC)
LockDate datetime UTC date and time session was locked
LockDateLocal datetime Local date and time session was locked
LockCookie int Lock ID
Timeout int Session timeout in minutes
Locked bit 1=Session locked, 0=Session not locked
SessionItemShort varbinary(7000) Serialized session state (if <= 7,000 bytes)
SessionItemLong image Serialized session state (if > 7,000 bytes)
Flags int Session state flags (1=Uninitialized session)

  2.ASPStateTempApplications表定义
列名 类型 描述
AppId int Application ID
AppName char(280) Application name






http://www.360doc.com/content/11/0420/07/5735238_110920671.shtml

你可能感兴趣的:(使用SQL Server存储ASP.NET Session变量)