下面的列表描述了可用的会话状态模式:
-
这是默认值。
-
这确保了在重新启动 Web 应用程序时会保留会话状态,并让会话状态可用于网络场中的多个 Web 服务器。
-
这确保了在重新启动 Web 应用程序时会保留会话状态,并让会话状态可用于网络场中的多个 Web 服务器。
-
Custom 模式,此模式允许您指定自定义存储提供程序。
-
Off 模式,此模式禁用会话状态。
HttpSessionState.Mode 属性的值,可以查看当前选定的会话状态。
会话状态事件。
|
|
|---|
|
如果使用此模式,则在同一会话的不同请求由不同的辅助进程进行处理时,可能会发生数据丢失。 |
使用此模式可以确保在重新启动 Web 应用程序时保留会话状态,并使会话状态可用于网络场中的多个 Web 服务器。
ASP.NET 状态服务安装在以下位置:
版本号\aspnet_state.exe
StateServer 模式,请在该应用程序的 Web.config 文件中执行以下操作:
-
StateServer。
-
:42424。
注意
使用受保护的配置加密配置信息。
SampleStateServer 的远程计算机上:
<configuration>
<system.web>
<sessionState mode="StateServer"
stateConnectionString="tcpip=SampleStateServer:42424"
cookieless="false"
timeout="20"/>
</system.web>
</configuration>
|
|
|---|
|
SerializableAttribute 类。 |
有 关如何创建计算机密钥的信息,请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 313091“How to create keys by using Visual Basic .NET for use in Forms authentication”(如何使用 Visual Basic .NET 创建用于 Forms 身份验证的密钥)。
使用此模式可以确保在重新启动 Web 应用程序时保留会话状态,并使会话状态可用于网络场中的多个 Web 服务器。
|
|
|---|
|
SerializableAttribute 类。 |
可以使用 Aspnet_regsql.exe 工具安装 ASP.NET 会话状态数据库,本主题稍后将对此进行说明。
SQLServer 模式,请在该应用程序的 Web.config 文件中执行以下操作:
-
SQLServer。
-
sqlConnectionString 特性设置为 SQL Server 数据库的连接字符串。
注意
使用受保护的配置加密配置信息。
SQLServer 模式的一种配置设置,其中会话状态存储在一个名为“SampleSqlServer”的 SQL Server 上:
<configuration>
<system.web>
<sessionState mode="SQLServer"
sqlConnectionString="Integrated Security=SSPI;data
source=SampleSqlServer;" />
</system.web>
</configuration>
|
|
|---|
|
ASP.NET 模拟。 |
有 关解决服务器之间应用程序路径不同的问题的步骤信息,请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 325056“PRB: Session State Is Lost in Web Farm If You Use SqlServer or StateServer Session Mode”(PRB:如果使用 SqlServer 或 StateServer 会话模式则会在网络场中丢失会话状态)。
使用 Aspnet_regsql.exe 工具安装会话状态数据库
使用命令提供以下信息:
-
使用 -S 选项指定 SQL Server 实例的名称。
-
使用 -E 选项,以使用当前登录的用户,或者使用 -U 选项指定用户 ID,并使用 -P 选项指定密码。
-
用于添加会话状态数据库的 -ssadd 命令行选项。
Agent XPs SQL Server 选项:
EXECUTE sp_configure 'show advanced options', 1 RECONFIGURE WITH OVERRIDE GO EXECUTE sp_configure 'Agent XPs', 1 RECONFIGURE WITH OVERRIDE GO EXECUTE sp_configure 'show advanced options', 0 RECONFIGURE WITH OVERRIDE GO
Agent XPs 选项的所有 SQL Server Express 实例运行这些 Transact-SQL 命令。
-sstype 选项可能的值:
|
选项 |
说明 |
|---|---|
|
t |
如果将会话数据存储到 tempdb 数据库中,则在重新启动 SQL Server 时将丢失会话数据。 |
|
p |
将会话数据存储到 ASPState 数据库中,而不是存储到 tempdb 数据库中。 |
|
c |
-d 选项包括自定义数据库的名称。 |
例如,下面的命令将在名为“SampleSqlServer”的 SQL Server 实例上创建一个名为 ASPState 的数据库,并指定会话数据也存储在 ASPState 数据库中:
aspnet_regsql.exe -S SampleSqlServer -E -ssadd -sstype p
|
|
|---|
|
或者,运行 ASP.NET 1.0 或 ASP.NET 1.1 的 Web 服务器也可以将持久性会话状态定向到已安装 ASP.NET 2.0 会话状态架构的 SQL Server 中。 |
有 关设置 SQL Server 模式以实现故障转移群集的更多信息,请参见位于 http://support.microsoft.com 上的 Microsoft 知识库中的文章 323262“How to use ASP.NET session state SQL Server Mode in a failover cluster”(如何在故障转移群集中使用 ASP.NET 会话状态 SQL Server 模式)。
customProvider 特性,将 ASP.NET 会话状态配置为使用该提供程序实例来存储和检索会话数据。
下面的示例演示了一个 Web.config 文件中的一些元素,这些元素指定 ASP.NET 会话状态使用自定义会话状态存储提供程序:
<configuration>
<connectionStrings>
<add name="OdbcSessionServices"
connectionString="DSN=SessionState;" />
</connectionStrings>
<system.web>
<sessionState
mode="Custom"
customProvider="OdbcSessionProvider">
<providers>
<add name="OdbcSessionProvider"
type="Samples.AspNet.Session.OdbcSessionStateStore"
connectionStringName="OdbcSessionServices"
writeExceptionsToEventLog="false" />
</providers>
</sessionState>
</system.web>
</configuration>
实现会话状态存储提供程序。
|
|
|---|
|
ASP.NET 模拟。 |