.NET Framework 常规参考
sessionState 元素(ASP.NET 设置架构)
为当前应用程序配置会话状态设置。
configuration 元素(常规设置架构)
system.web 元素(ASP.NET 设置架构)
sessionState 元素(ASP.NET 设置架构)
<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]"
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">
<providers>...</providers>
</sessionState>
属性和元素
下面几部分描述了属性、子元素和父元素。
属性
属性 |
说明 |
||||||||||||
allowCustomSqlDatabase |
可选的 Boolean 属性。 指定会话状态 SQL 数据库是否可以是自定义数据库(而不是 ASP.NET 默认数据库)。如果为 false,则不能指定初始目录或数据库作为 sqlConnectionString 属性的值。默认会话状态 SQL 数据库为 ASPState 数据库。有关更多信息,请参见会话状态模式。 此属性是 .NET Framework 2.0 版中的新属性。 默认值为 false。 |
||||||||||||
cookieless |
可选的 HttpCookieMode 属性。 指定对于 Web 应用程序使用 Cookie 的方式。 cookieless 属性可以为下列可能值之一。默认值为 UseCookies。
|
||||||||||||
cookieName |
可选的 String 属性。 指定存储会话标识符的 Cookie 的名称。 此属性是 .NET Framework 2.0 版中的新属性。 默认值为 "ASP.NET_SessionId"。 |
||||||||||||
customProvider |
可选的 String 属性。 指定用于存储和检索会话状态数据的自定义会话状态提供程序的名称。该提供程序在 providers 元素中指定。仅当会话状态模式设置为 Custom 值时,才使用该提供程序。有关更多信息,请参见会话状态模式。 此属性是 .NET Framework 2.0 版中的新属性。 默认值为空字符串 ("")。 |
||||||||||||
mode |
可选的 SessionStateMode 属性。 指定存储会话状态值的位置。有关更多信息,请参见会话状态模式。 mode 属性可以为下列可能值之一。默认值为 InProc。
|
||||||||||||
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。 |
||||||||||||
sqlCommandTimeout |
可选的 TimeSpan 属性。 指定使用 SQL Server 会话状态模式的 SQL 命令的持续时间超时(秒)。持续时间超时是 SQL 命令可以处于空闲状态的时间(秒),超过此时间之后,该命令将被取消。 此属性是 .NET Framework 2.0 版中的新属性。 默认值为 0:00:30(30 秒)。 |
||||||||||||
sqlConnectionString |
可选的 String 属性。 为运行 SQL Server 的计算机指定连接字符串。该属性在 mode 属性设置为 SQLServer 值时是必需的。有关更多信息,请参见会话状态模式。
默认值为 "data source=127.0.0.1;Integrated Security=SSPI"。 |
||||||||||||
stateConnectionString |
可选的 String 属性。 指定远程存储会话状态的服务器名称或地址以及端口。端口值必须为 42424。当 mode 为 StateServer 值时,该属性是必需的。确保运行 ASP.NET 状态服务的服务器是存储会话状态信息的远程服务器。该服务随 ASP.NET 一起安装,默认情况下为 %SystemRoot%/Microsoft.NET/Framework/VersionNumber/aspnet_state.exe。有关更多信息,请参见会话状态模式。
默认值为 "tcpip=127.0.0.1:42424"。 |
||||||||||||
stateNetworkTimeout |
可选的 TimeSpan 属性。 指定 Web 服务器与状态服务器之间的 TCP/IP 网络连接可以处于空闲状态的时间(秒),超过此时间后,请求将被取消。该属性在 mode 属性设置为 StateServer 值时使用。 默认值为 10 秒。 |
||||||||||||
timeout |
可选的 TimeSpan 属性。 指定在放弃一个会话前该会话可以处于空闲状态的分钟数。对于进程内和状态服务器模式,timeout 属性不能设置为大于 525,601 分钟(1 年)的值。 会话 timeout 配置设置仅适用于 ASP.NET 页。更改会话 timeout 值不会影响 ASP 页的会话超时时间。同样,更改 ASP 页的会话超时时间不会影响 ASP.NET 页的会话超时时间。 默认值为 20 分钟。 |
||||||||||||
useHostingIdentity |
可选的 Boolean 属性。 指定会话状态将恢复为宿主标识还是使用客户端模拟。 如果为 true,ASP.NET 将使用下列进程凭据之一来连接会话状态存储区:
<identity impersonate="true" userName="user" password="pwd" /> 如果为 false,ASP.NET 将使用目前与当前请求的操作系统线程关联的凭据来连接会话状态存储区。对于客户端模拟,ASP.NET 将使用与浏览器协商的安全凭据来连接会话状态存储区。如果为 false,ASP.NET 在连接会话状态存储区时不会恢复为进程标识或应用程序模拟标识。有关更多信息,请参见 ASP.NET 模拟。 此属性是 .NET Framework 2.0 版中的新属性。 默认值为 true。
|
||||||||||||
继承的属性 |
可选的属性。 由所有节元素继承的属性。 |
子元素
元素 |
说明 |
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 模式
1. 在将要存储会话状态信息的远程服务器上,确保 ASP.NET 状态服务正在运行。
ASP.NET 状态服务是随 ASP.NET 一起安装的,默认情况下为 %SystemRoot%/Microsoft.NET/Framework/version/aspnet_state.exe。
2. 在应用程序的 Web.config 文件中,将 mode 设置为 "StateServer",并将 stateConnectionString 设置为诸如 "tcpip=dataserver:42424" 这样的值。
使用 SQLServer 模式
1. 在运行将要存储会话状态的 SQL Server 的计算机上运行 InstallSqlState.sql。
默认情况下,InstallSqlState.sql 位于 %SystemRoot%/Microsoft.NET/Framework/version 中。
这将创建一个具有新存储过程的名为 ASPState 的数据库,并在 TempDB 数据库中创建名为 ASPStateTempApplications 和 ASPStateTempSessions 的表。
2. 在应用程序的 Web.config 文件中,将 mode 设置为 "SQLServer",并将 sqlConnectionString 设置为诸如 "data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind" 这样的值。
注意 |
可以使用 aspnet_regsql 来完成这些步骤。 |
1.
有关访问和修改应用程序代码中 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" />
</system.web>
</configuration>
元素信息
配置节处理程序 |
SessionStateSection |
配置成员 |
System.Web.SessionState |
可配置的位置 |
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 |