ConfigurationManager不断获取Machine.config连接字符串

我有一个ac#assembly,它使用app.config来存储它的数据库连接字符串。 在调试应用程序时,我注意到与数据库的连接保持失败,因为ConfigurationManager保持返回machine.config连接字符串:

data source =。\ SQLEXPRESS; 综合安全; ….

我在app.config中的连接字符串之前添加了<clear/ >,它修复了我的开发机器上的问题。 我将其部署到生产环境时返回了问题。 有人能告诉我如何停止使用machine.config连接字符串?

 SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings[0].ConnectionString);     

UPDATE

以下仍然给我machine.config连接字符串?!

  Configuration appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location); string dllConfigData = appConfig.ConnectionStrings.ConnectionStrings[0].ConnectionString; 

在DLL中使用连接字符串时,您还需要使用设置的完全相同的名称将它们添加到exe的app.config中。 然后,您可以更改exe的.config文件中的连接字符串,DLL将在加载时自动获取它。

当您的数据库持久层在单独的DLL中实现时,这可能是您在app.config文件中使用自定义连接字符串的唯一方法。 甚至不问我花了多少时间来研究和调试它。

我知道这是一个较老的问题,但我今天遇到了同样的问题。 问题是我添加到项目中的app.config没有被复制到输出目录。 要解决此问题,请右键单击app.config并选择“ Properties 。 然后将Build Action更改为Content 。 希望这可以帮助!

尝试将app.config文件的实例作为Configuration对象获取:

 var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); var myConnString = config.ConnectionStrings["VersionConnectionString"].ConnectionString; 

这完全绕过了机器配置文件。

你应该通过NAME而不是INDEX来获取你的连接字符串 – 这将确保你得到你所要求的。

尝试

 SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["VersionConnectionString"].ConnectionString);