<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 文件中显式配置的,而是由应用程序返回的默认配置。
<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>