SessionState 元素(ASP.NET 设置架构) Session值的存储
<sessionState
mode="[Off|InProc|StateServer|SQLServer|Custom]"
timeout="number of minutes"
cookieName="session identifier cookie name"
cookieless=
"[true|false|AutoDetect|UseCookies|UseUri|UseDeviceProfile]"
regenerateExpiredSessionId="[True|False]"
sessionIDManagerType="session manager type"
sqlConnectionString="sql connection string"
sqlCommandTimeout="number of seconds"
allowCustomSqlDatabase="[True|False]"
useHostingIdentity="[True|False]"
stateConnectionString="tcpip=server:port"
stateNetworkTimeout="number of seconds"
customProvider="custom provider name"
compressionEnabled="[True|False]"
sqlConnectionRetryInterval="number of seconds">
<providers>...</providers>
</sessionState>
特性和元素
以下几节描述了特性、子元素和父元素。
特性
特性 |
说明 |
---|---|
allowCustomSqlDatabase |
可选的 Boolean 特性。 指定会话状态 SQL 数据库是否可以是自定义数据库(而不是 ASP.NET 默认数据库)。 如果为 false,则不能指定初始目录或数据库作为 sqlConnectionString 特性的值。 默认会话状态 SQL 数据库为 ASPState 数据库。 有关更多信息,请参见 会话状态模式。 此特性是 .NET Framework 2.0 版中的新特性。 默认值为 false。 |
compressionEnabled |
可选的 Boolean 特性。 指定是否将压缩应用于会话状态数据。 默认值为 false。 |
cookieless |
可选的 HttpCookieMode 特性。 指定如何将 Cookie 用于 Web 应用程序。 cookieless 特性可以为下列可能值之一。 默认值为 UseCookies 值。 说明
当配置支持 AJAX 的 ASP.NET 网站时,应仅为 cookieless 特性使用 UseCookies 的默认值。ASP.NET AJAX 客户端脚本库不支持使用编码到 URL 中的 Cookie 的设置。 Value说明
AutoDetectASP.NET 确定请求浏览器或设备是否支持 Cookie。如果请求浏览器或请求设备支持 Cookie,则 AutoDetect 使用 Cookie 来保留用户数据;否则,将在查询字符串中使用一个标识符。如果浏览器或设备支持 Cookie,但当前禁用了 Cookie,则请求功能仍会使用 Cookie。
UseCookies无论浏览器或设备是否支持 Cookie,都使用 Cookie 来保留用户数据。
UseDeviceProfileASP.NET 根据 HttpBrowserCapabilities 设置来确定是否使用 Cookie。如果 HttpBrowserCapabilities 设置指示浏览器或设备支持 Cookie,将使用 Cookie;否则,将在查询字符串中使用一个标识符。
UseUri无论浏览器或设备是否支持 Cookie,调用功能都使用查询字符串来存储标识符。 |
cookieName |
可选的 String 特性。 指定存储会话标识符的 Cookie 的名称。 此特性是 .NET Framework 2.0 版中的新特性。 默认值为 "ASP.NET_SessionId"。 |
customProvider |
可选的 String 特性。 指定用于存储和检索会话状态数据的自定义会话状态提供程序的名称。 该提供程序在 providers 元素中指定。 仅当会话状态模式设置为 Custom 值时,才使用该提供程序。 有关更多信息,请参见会话状态模式。 此特性是 .NET Framework 2.0 版中的新特性。 默认值为空字符串 ("")。 |
mode |
可选的 SessionStateMode 特性。 指定存储会话状态值的位置。 有关更多信息,请参见会话状态模式。 mode 特性可以为下列可能值之一。 默认值为 InProc 值。 Value说明
Custom会话状态正在使用自定义数据存储来存储会话状态信息。
InProc会话处于正在处理 ASP.NET 辅助进程的状态。
Off会话状态被禁用。
SQLServer会话状态将使用进程外 SQL Server 数据库来存储状态信息。
StateServer会话状态将使用进程外 ASP.NET 状态服务来存储状态信息。 |
partitionResolverType |
可选的 String 特性。 指定在哪里存储会话状态。 如果 partitionResolverType 特性中指定了值,则忽略 sqlConnectionString 和 stateConnectionString 特性。 PartitionResolverType 属性返回的连接字符串将用于每个请求,为请求的其余部分连接到适当的服务器位置。 如果连接字符串无效,ASP.NET 会引发一个异常,该异常与当配置的服务器连接字符串无效时引发的异常相同。 该属性用于在 SQL 或状态服务器模式下在多个后端节点上划分会话状态数据。 此特性是 .NET Framework 2.0 版中的新特性。 默认为空字符串。 |
regenerateExpiredSessionId |
可选的 Boolean 特性。 指定当客户端指定了过期的会话 ID 时是否重新发出会话 ID。 默认情况下,当启用了 regenerateExpiredSessionId 时,仅为 cookieless 模式重新发出会话 ID。 有关更多信息,请参见IsCookieless。 此特性是 .NET Framework 2.0 版中的新特性。 默认值为 true。 |
sessionIDManagerType |
可选的 String 特性。 指定会话 ID 管理器的完全限定类型。 默认值为空字符串。 |
sqlCommandTimeout |
可选的 TimeSpan 特性。 指定使用 SQL Server 会话状态模式的 SQL 命令的持续时间超时(秒)。 持续时间超时是 SQL 命令可以处于空闲状态的时间(秒),超过此时间之后,该命令将被取消。 此特性是 .NET Framework 2.0 版中的新特性。 默认值为 0:00:30(30 秒)。 |
sqlConnectionRetryInterval |
可选的 TimeSpan 特性。 指定以秒计连接到数据库的尝试之间的时间间隔。 默认值为 0 秒。 |
sqlConnectionString |
可选的 String 特性。 为运行 SQL Server 的计算机指定连接字符串。 该特性在 mode 特性设置为 SQLServer 值时是必需的。 有关更多信息,请参见会话状态模式。 您可以从 connectionStrings 节点中将此特性设置为命名 sqlConnectionString,也可以使用下面的语法: sqlConnectionString="Data Source=.\SQLServer2005;Initial Catalog=SessionState;Integrated Security=SSPI;" 说明
若要在使用 SQLServer 模式时提高您的应用程序的安全性,请使用受保护的配置来加密配置的 sessionState 节,以帮助保护 sqlConnectionString 值。 默认值为 "data source=127.0.0.1;Integrated Security=SSPI"。 |
stateConnectionString |
可选的 String 特性。 指定远程存储会话状态的服务器名称或地址以及端口。 端口值必须为 42424。 当 mode 为 StateServer 值时,该特性是必需的。 确保运行 ASP.NET 状态服务的服务器是存储会话状态信息的远程服务器。 此服务随 ASP.NET 一起安装,其默认安装位置为 %windir%\Microsoft.NET\Framework\VersionNumber\aspnet_state.exe。 有关更多信息,请参见会话状态模式。 说明
若要在使用 StateServer 模式时提高您的应用程序的安全性,请使用受保护的配置来加密配置的 sessionState 节,以帮助保护 stateConnectionString 值。 默认值为 "tcpip=127.0.0.1:42424"。 |
stateNetworkTimeout |
可选的 TimeSpan 特性。 指定 Web 服务器与状态服务器之间的 TCP/IP 网络连接可以处于空闲状态的时间(秒),超过此时间后,请求将被取消。 该特性在 mode 特性设置为 StateServer 值时使用。 默认值为 10 秒。 |
timeout |
可选的 TimeSpan 特性。 指定在放弃一个会话前该会话可以处于空闲状态的分钟数。 对于进程内和状态服务器模式,timeout 特性不能设置为大于 525,600 分钟(1 年)的值。 会话 timeout 配置设置仅适用于 ASP.NET 页。 更改会话 timeout 值不会影响 ASP 页的会话超时时间。 同样,更改 ASP 页的会话超时时间不会影响 ASP.NET 页的会话超时时间。 默认值为 20 分钟。 |
useHostingIdentity |
可选的 Boolean 特性。 指定会话状态将恢复为承载标识,还是将使用客户端模拟。 如果为 true,ASP.NET 将使用下列进程凭据之一来连接会话状态存储区:
如果为 false,ASP.NET 将使用目前与当前请求的操作系统线程关联的凭据来连接会话状态存储区。 对于客户端模拟,ASP.NET 将使用与浏览器协商的安全凭据来连接会话状态存储区。 如果为 false,ASP.NET 在连接会话状态存储区时不会恢复为进程标识或应用程序模拟标识。 有关更多信息,请参见ASP.NET 模拟。 此特性是 .NET Framework 2.0 版中的新特性。 默认值为 true。 说明
在 .NET Framework 1.1 版中,如果 mode 特性设置为 SQLServer,并且客户端模拟有效,则 ASP.NET 使用来自 ASP.NET 客户端模拟的客户端凭据连接到运行 SQL Server 的计算机。 |
继承的特性 |
可选的特性。 由所有节元素继承的特性。 |
子元素
元素 |
说明 |
---|---|
providers |
包含自定义会话状态存储区提供程序的集合。 |
父元素
元素 |
说明 |
---|---|
configuration |
公共语言运行时和基于 .NET Framework 的应用程序所使用的每个配置文件中均需要的根元素。 |
system.web |
指定配置文件中 ASP.NET 配置设置的根元素,并且包含各种元素,这些元素配置 ASP.NET Web 应用程序并控制应用程序的行为方式。 |
<sessionState> 元素配置当前应用程序的会话状态设置。
新客户端在开始与 Web 应用程序交互时,会发出一个会话 ID,并且该 ID 将与会话有效期间从同一客户端发出的所有后续请求关联。 此 ID 用于在不同的请求中保持与客户端会话关联的服务器端状态。 <sessionState> 元素控制 ASP.NET 应用程序如何为每个客户端建立并保持这种关联。
这种机制非常灵活,可以为您提供许多功能,其中包括承载进程外的会话状态信息,以及在不使用 Cookie 的情况下跟踪状态。
在 URI 中发送会话 ID 时,可以超过 URI 的最大大小。 如果匿名标识票证、Forms 身份验证票证、会话 ID 和用户数据的组合超过了允许的最大 URI 长度,请求将失败,并发出“400 错误的请求”错误。
使用 StateServer 模式
-
在将要存储会话状态信息的远程服务器上,确保 ASP.NET 状态服务正在运行。
ASP.NET 状态服务随 ASP.NET 一起安装,默认情况下位于 %windir%\Microsoft.NET\Framework\version\aspnet_state.exe 中。
-
在应用程序的 Web.config 文件中,将 mode 设置为 "StateServer",并将 stateConnectionString 设置为诸如 "tcpip=dataserver:42424" 这样的值。
使用 SQLServer 模式
-
在运行将要存储会话状态的 SQL Server 的计算机上运行 InstallSqlState.sql。
默认情况下,InstallSqlState.sql 位于 %windir%\Microsoft.NET\Framework\version 中。
这将创建一个具有新存储过程的名为 ASPState 的数据库,并在 TempDB 数据库中创建名为 ASPStateTempApplications 和 ASPStateTempSessions 的表。
-
在应用程序的 Web.config 文件中,将 mode 设置为 "SQLServer",并将 sqlConnectionString 设置为诸如 "data source=localhost;Integrated Security=SSPI;" 这样的值。
说明 可以使用 Aspnet_regsql.exe 来完成这些步骤。
有关访问和修改应用程序代码中 <sessionState> 元素的配置值的信息,请参见 SessionStateSection 和 System.Web.SessionState。
默认配置
下面的默认 <sessionState> 元素不是在 Machine.config 文件或根 Web.config 文件中显式配置的, 而是由应用程序返回的默认配置。
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
stateNetworkTimeout="10"
sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI"
sqlCommandTimeout="30"
customProvider=""
cookieless="UseCookies"
cookieName="ASP.NET_SessionId"
timeout="20"
allowCustomSqlDatabase="false"
regenerateExpiredSessionId="true"
partitionResolverType=""
useHostingIdentity="true">
<providers>
<clear />
</providers>
</sessionState>
下面的示例演示如何指定会话状态配置设置。 <sessionState
mode="SQLServer"
cookieless="true"
sqlConnectionString=" Integrated Security=SSPI;data source=MySqlServer;"
sqlCommandTimeout="10" />
配置节处理程序 |
|
配置成员 |
|
可配置的位置 |
Machine.config 根级别的 Web.config 应用程序级别的 Web.config |
要求 |
Microsoft Internet 信息服务版本 5.0、5.1 或 6.0 .NET Framework 版本 1.0、1.1 或 2.0 Microsoft Visual Studio 2003 或 Visual Studio 2005 |