在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" />