【问题标题】:Reading value from Web.Config that uses configSource files从使用 configSource 文件的 Web.Config 读取值
【发布时间】:2015-11-27 15:48:35
【问题描述】:

为了与recommendation here 保持一致,我们将连接字符串分离到一个 xml 文件中。我们的 web.config:

//old - works
<connectionStrings>
   <add name="DefaultConnection" 
        connectionString="Data Source=.\SQLExpress;Initial Catalog=xxx;Integrated Security=True;" 
        providerName="System.Data.SqlClient" />
<connectionStrings>
//new - fails
<connectionStrings configSource="connections.config" />

connections.config 的内容:

<?xml version="1.0" encoding="utf-8"?>
<connectionStrings>
   <add name="DefaultConnection" connectionString="Data Source=.\SQLExpress;Initial Catalog=xxx;Integrated Security=True;" providerName="System.Data.SqlClient" />
</connectionStrings>

这两个文件都位于项目根文件夹中。 EntityFramework 与这两种解决方案都可以正常工作。但是,当我尝试获取某些测试的连接字符串时,它无法检索。这是我们用来提取连接字符串的代码:

string ConnectionString =
       ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;

直接从 web.config 读取连接字符串是可行的,当我们引入 ConfigSource 时它会失败。我们需要什么才能让它工作

【问题讨论】:

    标签: c# web-config app-config configurationmanager


    【解决方案1】:

    您需要将配置文件的Copy to Output Directory 属性设置为Copy alwaysCopy if newer

    如果您不这样做,您的ConnectionStrings.config 文件将不会被复制到输出调试/发布文件夹,因此将找不到。

    【讨论】:

      【解决方案2】:

      还要注意,外部文件的名称应与节名称相同。就像它应该是connectionStrings.config,而不是connections.config

      【讨论】:

      • 这可能是个好习惯,但不是必需的。这有效:connectionStrings configSource="connections.config"。 configSource 可以包含任何(配置)文件名。
      猜你喜欢
      • 2012-10-13
      • 1970-01-01
      • 2015-07-03
      • 2014-05-03
      • 2015-09-14
      • 1970-01-01
      • 1970-01-01
      • 2014-11-16
      • 1970-01-01
      相关资源
      最近更新 更多