导航

asp.net中保存session变量的默认的三种方式

Posted on 2012-03-12 22:46  yjss  阅读(1568)  评论(0编辑  收藏  举报

在web站点中经常要用到session对象保存一些数据,然而由于各种原因经常会造成session丢失,下面是常用的三种模式,可根据需要进行配置

  • InProc 模式,此模式将会话状态存储在 Web 服务器上的内存中。 这是默认值。

  • StateServer 模式,此模式将会话状态存储在一个名为 ASP.NET 状态服务的单独进程中。 这确保了在重新启动 Web 应用程序时会保留会话状态,并让会话状态可用于网络场中的多个 Web 服务器。

  • SQLServer 模式将会话状态存储到一个 SQL Server 数据库中。 这确保了在重新启动 Web 应用程序时会保留会话状态,并让会话状态可用于网络场中的多个 Web 服务器。

配置方法:

InProc模式(默认值,可不用在配置文件中配置,默认为20分钟超时,由于空间和服务器不稳定易丢失)

<sessionState mode="InProc" timeout="120" />

StateServer模式(不易丢失,需要要服务器上启动“asp.net 状态服务”,如需远程访问需将“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\aspnet_state\Parameters”中“AllowRemoteConnection”值设为1)

<sessionState mode="StateServer" timeout="120" stateConnectionString="tcpip=127.0.0.1:42424" stateNetworkTimeout="10" />

SQLServer 模式(需要使用“aspnet_regsql.exe -ssadd -sstype c -d [数据库名]  -S [服务器] -U [用户名] -P [密码]”命令对数据库进行配置)

<sessionState mode="SQLServer" timeout="120" allowCustomSqlDatabase="true"  sqlConnectionString="Data Source=.\sqlexpress;Initial Catalog=dnt31;Integrated Security=True" />