4

为什么在 Visual Studio 2012 中创建 ASP.NET 4.5 Web 窗体项目web.config默认包含以下内容:

...
<connectionStrings>
  <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-Project.Web-20130625130806;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-Project.Web-20130625130806.mdf" />
</connectionStrings>
...
<sessionState mode="InProc" customProvider="DefaultSessionProvider">
  <providers>
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" />
  </providers>
</sessionState>
...

(我的问题不是关于 LocalDb 是什么或为什么有一个示例连接字符串)

在这里说这InProc意味着会话状态存储在内存中。那么,为什么在声明后需要指定连接字符串InProc

4

1 回答 1

6

<ConnectionStrings>部分上方显示的<SessionState>部分与 sessionState 没有任何关系。ConnectionStrings 部分用于其他目的,例如当您拥有自己的数据库并且需要连接到它时,并且此部分仅包含用于 MemberShip、Profiles 等的数据库的详细信息。

<sessionState >元素有自己的设置,用于指定名为:的连接字符串sqlConnectionString,如下所示:

<sessionState mode="Off|InProc|StateServer|SQLServer"
              cookieless="true|false"
              timeout="number of minutes"
              stateConnectionString="tcpip=server:port"
              sqlConnectionString="sql connection string"
              stateNetworkTimeout="number of seconds"/>

现在,当您使用 mode="InProc" 时,无需设置 sqlConnectionString 设置。即使已设置,也不会使用,因为 Mode 是“InProc”而不是“SQLServer”

于 2013-07-17T20:02:35.697 回答