<sessionState>
<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 数据库。 有关更多信息,请参见 Session State Modes。默认值为 false。
compressionEnabled
可选的 Boolean 特性。指定是否将压缩应用于会话状态数据。默认值为 false。
cookieless
可选的 HttpCookieMode 特性。指定如何将 Cookie 用于 Web 应用程序。cookieless 特性可以为下列可能值之一。 默认值为 UseCookies 值。
- cookieName
可选的 String 特性。指定存储会话标识符的 Cookie 的名称。默认值为 "ASP.NET_SessionId"。
- customProvider
可选的 String 特性。
指定用于存储和检索会话状态数据的自定义会话状态提供程序的名称。 该提供程序在 providers 元素中指定。 仅当会话状态模式设置为Custom 值时,才使用该提供程序。 有关更多信息,请参见Session State Modes。默认值为空字符串 ("")。
mode
可选的 SessionStateMode 特性。指定存储会话状态值的位置。 有关更多信息,请参见Session State Modes。
mode 特性可以为下列可能值之一。 默认值为 InProc 值。
- partitionResolverType
可选的 String 特性。指定在哪里存储会话状态。 如果 partitionResolverType 特性中指定了值,则忽略 sqlConnectionString 和 stateConnectionString特性。 PartitionResolverType 属性返回的连接字符串将用于每个请求,为请求的其余部分连接到适当的服务器位置。 如果连接字符串无效,ASP.NET 会引发一个异常,该异常与当配置的服务器连接字符串无效时引发的异常相同。 该属性用于在 SQL 或状态服务器模式下在多个后端节点上划分会话状态数据。默认值为空字符串。
- regenerateExpiredSessionId
可选的 Boolean 特性。指定当客户端指定了过期的会话 ID 时是否重新发出会话 ID。 默认情况下,当启用了 regenerateExpiredSessionId 时,仅为cookieless 模式重新发出会话 ID。 有关更多信息,请参见 IsCookieless。默认值为 true。
- sessionIDManagerType
可选的 String 特性。指定会话 ID 管理器的完全限定类型。 默认值为空字符串。
- sqlCommandTimeout
可选的 TimeSpan 特性。
指定使用 SQL Server 会话状态模式的 SQL 命令的持续时间超时(秒)。 持续时间超时是 SQL 命令可以处于空闲状态的时间(秒),超过此时间之后,该命令将被取消。默认值为 0:00:30(30 秒)。
- sqlConnectionRetryInterval
可选的 TimeSpan 特性。指定以秒计连接到数据库的尝试之间的时间间隔。默认值为 0 秒。
- sqlConnectionString
可选的 String 特性。
为运行 SQL Server 的计算机指定连接字符串。 该特性在 mode 特性设置为 SQLServer 值时是必需的。 有关更多信息,请参见Session State Modes。
您可以从 connectionStrings 节点中将此特性设置为命名 sqlConnectionString,也可以使用下面的语法:
sqlConnectionString="Data Source=.\SQLServer2005;Initial Catalog=SessionState;Integrated Security=SSPI;"
默认值为 "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。 有关更多信息,请参见Session State Modes。
默认值为 "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 将使用下列进程凭据之一来连接会话状态存储区:
-
承载进程;对于 Microsoft Internet 信息服务 (IIS) 5 和 5.1 版为 ASPNET,对于 Microsoft Windows Server 2003 为 NETWORK SERVICE。
-
应用程序模拟标识,当使用了以下配置时使用此凭据:
<identity impersonate="true" userName=" 域 \ 用户名 " password=" 安全密码 " />
如果为 false,ASP.NET 将使用目前与当前请求的操作系统线程关联的凭据来连接会话状态存储区。 对于客户端模拟,ASP.NET 将使用与浏览器协商的安全凭据来连接会话状态存储区。 如果为 false,ASP.NET 在连接会话状态存储区时不会恢复为进程标识或应用程序模拟标识。 有关更多信息,请参见 ASP.NET Impersonation。默认值为 true。
子元素
元素 |
说明 |
---|---|
providers |
包含自定义会话状态存储提供程序的集合。 |
父元素
元素 |
说明 |
---|---|
configuration |
公共语言运行时和基于 .NET Framework 的应用程序所使用的每个配置文件中均需要的根元素。 |
system.web |
指定配置文件中 ASP.NET 配置设置的根元素,并且包含各种元素,这些元素配置 ASP.NET Web 应用程序并控制应用程序的行为方式。 |
新客户端在开始与 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;" 这样的值。
Note
可以使用 Aspnet_regsql.exe 来完成这些步骤。
有关访问和修改应用程序代码中 <sessionState> 元素的配置值的信息,请参见 SessionStateSection 和 System.Web.SessionState。
默认配置
下面的默认 <sessionState> 元素不是在 Machine.config 文件或根 Web.config 文件中显式配置的。 而是由应用程序返回的默认配置。
<sessionState 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" />