appsettings文件属性是否覆盖了app.config中的内容?

时间:2012-01-24 16:13:14

标签: c# asp.net visual-studio web-config

app.config中的appsettings标签有一个文件属性:

<appSettings file="other.config">
..
..
</appSettings>

这是如何工作的?它会将appSettings(原始)中的内容与other.config文件合并吗?或者它会覆盖它吗?如果other.config文件不存在,该怎么办呢?

我自己正在尝试,如果一个密钥不在原文中,它似乎没有从other.config读取它?

other.config文件是否只有xml节点,还是应该都在appsettings元素中?

<appSettings>
  <userId>123</userId>
</appSettings>

<userId>123</userId>

2 个答案:

答案 0 :(得分:39)

  • 如果文件不存在,则不会崩溃,只会被忽略。
  • 外部配置必须包含<appSettings>节点,因此您的第一个示例是正确的。
  • 外部文件中的值将优先,如果没有值,则使用app.config值。

这会掩盖一切吗?

答案 1 :(得分:2)

关于此问题的最佳答案之一是:ASP.NET web.config: configSource vs. file attributes-感谢@Massimiliano Peluso

file属性

.config属性

configSource属性指定一个包含自定义设置的外部文件,就像在web.config文件的appSettings条目中所做的一样。 同时,在System.Configuration.ConfigurationErrorsException属性中指定的外部文件包含您声明configSource的部分的设置。例如,如果您使用页面部分的configSource属性,则外部文件将包含页面部分的设置。

  

在外部配置中声明的自定义设置已在   文件属性将与appSettings中的设置合并   web.config文件中的部分。同时,configSource   不支持合并,这意味着您必须移动整个   部分设置进入外部文件。

Configuration