会话状态模式分为以下几种模式:
他们的区分是会话状态值的存储方式。
(1)InProc模式(进程内模式) 。为默认设置。
此模式将会话状态存储在Web服务器上的内存中。
(2)StateServer模式(状态服务器模式)。
此模式将会话状态存储在一个名为ASP.Net状态服务的单独进程中。这确保了在重新启动Web应用程序时会保留会话状态,并让会话状态可用于网路场中的多个Web服务器。
(3)SQL Server模式。
此模式将会话状态存储到一个SQL Server数据库中。这确保了在重新启动Web应用程序时会保留会话状态,并让会话状态可用于网路场中的多个Web服务器。
(4)Custom模式
此模式允许您指定自定义存储提供程序。
(5)Off模式
此模式禁止会话状态。
你可以在Web.config文件中,通过sessionState元素的mode属性指定会话模式。
<system.web>
<sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424"
cookieless="false" timeout="20">
</system.web>
(1)进程内模式(InProc)
进程内模式是默认的会话状态模式,使用SessionStateMode枚举值InProc指定。进程内模式将会话状态值和变量存储在本地Web服务器上的内存中。它是唯一支持Session_OnEnd事件的模式。
注意点:如果您通过在应用程序的 Web.config 文件的 processMode 元素中将 webGarden 属性设置为 true,从而启用网络园模式(多处理器 Web 服务器),请不要使用InProc 会话状态模式。如果使用此模式,则在同一会话的不同请求由不同的辅助进程进行处理时,可能会发生数据丢失。
(2)状态服务器模式
状态服务器模式将会话状态存储在一个称为 ASP.NET 状态服务的进程中,该进程是独立于 ASP.NET 辅助进程或 IIS 应用程序池的单独进程。使用此模式可以确保在重新启动 Web 应用程序时保留会话状态,并使会话状态可用于网络场中的多个 Web 服务器。
若要使用 StateServer 模式,必须首先确保 ASP.NET 状态服务运行在用于存储会话的服务器上。ASP.NET 状态服务在安装 ASP.NET 和 .NET Framework 时作为一个服务进行安装。
ASP.NET 状态服务安装在以下位置:
系统根目录/Microsoft.NET/Framework/版本号/aspnet_state.exe
若要将某个 ASP.NET 应用程序配置为使用 StateServer模式,请在该应用程序的 Web.config 文件中执行以下操作:
将 sessionState元素的 mode 属性设置为 StateServer。
将 stateConnectionString 属性设置为 tcpip=服务器名称:42424
注意:如果模式设置为StateServer,则存储在会话状态中的对象必须是可序列化的。
(3)SQL Server模式
如模式名,此模式吧会话状态存储到一个SQL Server数据库中。
与状态服务器模式一样,存储在会话状态中的对象必须是可序列化的,因为我们要在服务器之间传输。
要在SQL Server中存储会话状态,当然首先得有数据库。所以必须首先确保在SQL Server上安装了ASP.Net会话状态数据库。可以使用Aspnet_regsql.exe 工具安装 ASP.NET 会话状态数据库。
<configuration>
<system.web>
<sessionState mode="SQLServer"
sqlConnectionString="Integrated Security=SSPI;data
source=SampleSqlServer;" />
</system.web>
</configuration>
(4)自定义模式
自定义模式指定您希望使用自定义会话状态存储提供程序来存储会话状态数据。在使用 Custom 的 Mode 配置 ASP.NET 应用程序时,必须使用 sessionState 配置元素的 providers 子元素指定会话状态存储提供程序的类型。使用 add 子元素来指定提供程序类型,并包括指定提供程序类型名称的 type 属性以及指定提供程序实例名称的 name 属性。然后,将提供程序实例的名称提供给 sessionState元素的 customProvider 属性,将 ASP.NET 会话状态配置为使用该提供程序实例来存储和检索会话数据。
下面的示例演示了一个 Web.config 文件中的一些元素,这些元素指定 ASP.NET 会话状态使用自定义会话状态存储提供程序: