C#配置管理器。的ConnectionStrings

时间:2010-05-13 15:33:13

标签: c#

我有一个控制台应用程序,其中包含一个包含一个连接字符串的应用程序配置文件,如下所示:

<configuration>
  <connectionStrings>
    <add name="Target" 
      connectionString="server=MYSERVER; Database=MYDB; Integrated Security=SSPI;" />
  </connectionStrings>
</configuration>

当我使用:

将其传递给我的Connection时
ConfigurationManager.ConnectionStrings[1].ToString()

我有两个值,因此在集合中使用第二个,我的问题是第二个来自哪里?

我检查了\ Bin版本和原版,它不是我的!它显然是一个系统生成的,但我以前没见过这个?谁能开导我?

神秘连接字符串是:

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

这不是问题,我想知道为什么会发生这种情况?提前谢谢!

为了将来参考那些可能会或可能不会发现这一点的人,在发现machine.config之后,很明显通过索引引用配置是不好的做法,因为每个堆栈可能会有所不同,这就是使用“钥匙”的原因。

在这种情况下,我的代码是:

ConfigurationManager.ConnectionStrings["Target"].ToString()

干杯!

4 个答案:

答案 0 :(得分:26)

检查machine.config。如果您只想要输入,则可以向<clear />元素添加<connectionStrings>元素,如此...

<connectionStrings>
  <clear />
  <add name="Target" 
       connectionString=
             "server=MYSERVER; Database=MYDB; Integrated Security=SSPI;" />
</connectionStrings>

答案 1 :(得分:3)

它在machine.config文件中定义,它对机器上的所有.Net应用程序都是全局的。

连接字符串通过配置层次结构“堆栈”,这就是为什么您自己的连接字符串的元素名称被标记为“add”的原因。您正在将自己的连接字符串添加到计算机级连接字符串列表中。

最好使用:

ConfigurationManager.ConnectionStrings["Target"].ConnectionString

确保获得自己的连接字符串,即使修改了machine.config。

答案 2 :(得分:3)

检查你的machine.config(在WindowsDir \ Framework下)。我只是检查了我的,我也有同样的事情。

答案 3 :(得分:0)

连接字符串标记中的索引第一个元素默认存储它代表&gt; MemberShip 数据库连接字符串。

在您的应用程序中使用CLR的考虑因素,以便CLR代表您附加它默认情况下。

类似于CLR在没有构造函数的类创建中使用默认构造函数。