我有一个控制台应用程序,其中包含一个包含一个连接字符串的应用程序配置文件,如下所示:
<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()
干杯!
答案 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在没有构造函数的类创建中使用默认构造函数。