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

C# 从使用configSource文件的Web.Config读取值,c#,web-config,app-config,configurationmanager,C#,Web Config,App Config,Configurationmanager,为了保持一致,我们将连接字符串分离为一个xml文件。我们的web.config: //old - works <connectionStrings> <add name="DefaultConnection" connectionString="Data Source=.\SQLExpress;Initial Catalog=xxx;Integrated Security=True;" providerName="System.Data

为了保持一致,我们将连接字符串分离为一个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" />

直接从web.config读取连接字符串是有效的,当我们引入ConfigSource时,它会失败。我们需要做些什么才能使其工作

您需要将配置文件的
复制到输出目录
属性设置为
始终复制
复制(如果更新)


如果不执行此操作,您的
连接字符串.config
文件将不会复制到输出调试/发布文件夹,因此将找不到该文件。

还请注意,外部文件的名称应与节名的名称相同。它应该是connectionStrings.config,而不是connections.config,这可能是一个很好的实践,但不是必需的。这是有效的:ConnectionString configSource=“connections.config”。configSource可以包含任何(配置)文件名。
<?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>
string ConnectionString =
       ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;