2

我的 app.config 文件发生了一件奇怪的事情。我的 ConnectionStrings 部分包含以下内容:

<connectionStrings>
  <add name="Connection" connectionString="Data Source=TheServer;
   Initial Catalog=TheDatabase;IntegratedSecurity=SSPI" 
   providerName="System.Data.SqlClient"/>
</connectionStrings>

但是,当我通过 ConfigurationManager.ConnectionStrings[0] 查询该部分时,我得到了这个连接字符串:

Data Source=.\\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true

它从哪里得到这个值?

4

5 回答 5

6

它是从 machine.config 中读取的,您可以确保在添加自己的连接字符串之前清除所有连接字符串:

<connectionStrings>
  <clear/>
  <add name="Connection" connectionString="Data Source=TheServer;
   Initial Catalog=TheDatabase;IntegratedSecurity=SSPI" 
   providerName="System.Data.SqlClient"/>
</connectionStrings>

或者永远不要通过索引引用您的连接字符串,使用您给它们的名称:

ConfigurationManager.ConnectionStrings["Connection"]
于 2009-03-12T12:30:18.993 回答
1

它来自 machine.config。.NET 自动合并应用程序配置(或 Web 配置)和 machine.config 的连接字符串部分(以及我相信的其他部分)。

您可以在此处了解它在 ASP.NET 中的工作原理。

于 2009-03-12T12:26:35.850 回答
1

它来自另一个配置,要么是树中较高的 app.config,要么来自机器配置。要忽略其他任何内容,请使用<clear />删除当前配置中没有的任何内容。

<connectionStrings>
   <clear />
   <add name="Connection" connectionString="Data Source=TheServer;
     Initial Catalog=TheDatabase;IntegratedSecurity=SSPI" 
     providerName="System.Data.SqlClient"/>
</connectionStrings>
于 2009-03-12T12:28:05.223 回答
0

除了 Nath 的回答,这更好:

ConfigurationManager.ConnectionStrings["Connection"]
于 2009-03-12T12:30:42.753 回答
0

尽管 Jason Punyon 已经回答了这个问题,但我强烈建议您通过它们的名称而不是它们的索引来访问您的连接字符串。例如

ConfigurationManager.ConnectionStrings["Connection"]
于 2009-03-12T12:34:04.243 回答