从使用 configSource 文件的 Web.Config 中读取值

Reading value from Web.Config that uses configSource files

为了与 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 适用于两种解决方案。但是,当我尝试获取某些测试的连接字符串时,它失败了 retrieve.This 是我们用来提取连接字符串的代码:

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

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

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

如果您不这样做,您的 ConnectionStrings.config 文件将不会复制到输出 debug/release 文件夹,因此将找不到。

另请注意,外部文件的名称应与节名称相同。好像应该是 connectionStrings.config,而不是 connections.config