app.config怪异

时间:2009-03-12 12:24:17

标签: c# app-config

我的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

从哪里获取此值?

5 个答案:

答案 0 :(得分: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"]

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

除了纳特的回答,这更好:

ConfigurationManager.ConnectionStrings["Connection"]

答案 4 :(得分:0)

尽管Jason Punyon回答了这个问题,但我强烈建议您通过他们的名字而不是索引来访问您的连接字符串。 e.g。

ConfigurationManager.ConnectionStrings["Connection"]