我的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
从哪里获取此值?
答案 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"]