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

Nic*_*ick 9 c# configuration configurationmanager

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

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

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

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

<connectionStrings>
    <clear/>
    <add name="VersionConnectionString"
     connectionString=" Data Source=localhost;Initial Catalog=VersionInfo;User ID=user;Password=password"         
     providerName="System.Data.SqlClient" />
  </connectionStrings>
Run Code Online (Sandbox Code Playgroud)

UPDATE

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

 Configuration appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
                string dllConfigData =
                    appConfig.ConnectionStrings.ConnectionStrings[0].ConnectionString;
Run Code Online (Sandbox Code Playgroud)

Ala*_*lan 6

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

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


Kei*_*thS 1

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

var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

var myConnString = config.ConnectionStrings["VersionConnectionString"].ConnectionString;
Run Code Online (Sandbox Code Playgroud)

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

  • 这似乎并没有真正绕过机器配置 (5认同)