SessionState stateConnectionString 和 sqlConnectionString

Posted

技术标签:

【中文标题】SessionState stateConnectionString 和 sqlConnectionString【英文标题】:SessionState stateConnectionString and sqlConnectionString 【发布时间】:2011-10-19 07:22:49 【问题描述】:

我们想在 SQL Server 中存储会话。我们有 sessionState mode="SQLServer"。我得到了一个示例连接字符串,如下所示。在此它同时具有 stateConnectionString 和 sqlConnectionString。

问题:为什么mode="SQLServer"时需要stateConnectionString?

<sessionState mode="SQLServer" 
cookieless="false" timeout="20" 
stateConnectionString="tcpip=XXX.XX.XXX.XXX:42424" 
sqlConnectionString="data source=XXX-FFFF-sql2k8,2025;
Initial   Catalog=AspState_XX_3_0;user id=XXX;password=XXX" 
allowCustomSqlDatabase="true" 
sqlCommandTimeout="1200"/>

注意 1:SQLServer 模式 将会话状态存储在 SQL Server 数据库中。使用此模式可确保在重新启动 Web 应用程序时保留会话状态,并使会话状态可用于 Web 场中的多个 Web 服务器。要使用 SQLServer 模式,您必须首先确保在 SQL Server 上安装了 ASP.NET 会话状态数据库。您可以使用 Aspnet_regsql.exe 工具安装 ASP.NET 会话状态数据库

注意 2:StateServer 模式将会话状态存储在一个进程中,称为 ASP.NET 状态服务,它与 ASP.NET 工作进程或 IIS 应用程序池是分开的。要使用 StateServer 模式,您必须首先确保 ASP.NET 状态服务正在用于会话存储的服务器上运行。要在 Web 场中使用 StateServer 模式,您必须在 Web 配置的 machineKey 元素中为属于 Web 场的所有应用程序指定相同的加密密钥。

【问题讨论】:

【参考方案1】:

AFAIK 在 SQL Server 中存储会话状态时,您可以跳过 StateConnectionString。

我没试过,不过这里好像证实了:http://support.microsoft.com/kb/317604

【讨论】:

以上是关于SessionState stateConnectionString 和 sqlConnectionString的主要内容,如果未能解决你的问题,请参考以下文章

ModuleNotFoundError:没有名为“utils.SessionState”的模块

表单身份验证超时与 sessionState 超时

SessionState的几种设置

在C#中,在Web.Config文件中加入<sessionState mode="InProc"></sessionState>语句

SessionState stateConnectionString 和 sqlConnectionString

.net mvc (MySQL) 上的 sessionState 问题