从配置中加载一些,从configSource加载其他一些

时间:2016-08-22 12:01:27

标签: c# asp.net-mvc web-config

我有一个带<appSettings>标记的配置文件。我希望它们中的一些是常量,并从另一个配置文件加载其中一些。

的Web.config:

<appSettings>
  <add key="commonKey1" value="commonValue1" />
  <add key="commonKey2" value="commonValue2" />
  <add key="commonKey3" value="commonValue3" />
  <!-- ??? -->
</appSettings>

AdditionalSettings.config

<appSettings>
  <add key="AdditionalKey1" value="AdditionalValue1" />
  <add key="AdditionalKey2" value="AdditionalValue2" />
</appSettings>

结果:编译后的Web.config应该是这样的:

<appSettings>
  <add key="commonKey1" value="commonValue1" />
  <add key="commonKey2" value="commonValue2" />
  <add key="commonKey3" value="commonValue3" />
  <add key="AdditionalKey1" value="AdditionalValue1" />
  <add key="AdditionalKey2" value="AdditionalValue2" />
</appSettings>

如果所有值都存储在单独的文件中,则非常容易:

<appSettings configSource="Settings.config" />

但我不知道如果基本文件中应该存在某些标记,如何合并两个文件,并且只应从单独的标记中加载其他标记。

我也试过

<appSettings configSource="Settings.config">
  <add key="commonKey1" value="commonValue1" />
  <add key="commonKey2" value="commonValue2" />
  ... etc

但它不起作用:A section using 'configSource' may contain no other attributes or elements.

当然我也不能只创建两个标签(一个具有具体值,另一个具有configSource),结果是:

There is a duplicate 'system.web.extensions/scripting/scriptResourceHandler' section defined

有人可以帮忙吗?它是否可能,或者还有另一种解决问题的方法?

1 个答案:

答案 0 :(得分:4)

在浪费太多时间之后,我来到了灵魂:

<appSettings configSource="Settings.config">
  <add key="commonKey1" value="commonValue1" />
  <add key="commonKey2" value="commonValue2" />
  ... etc

是非法的,但是:

<appSettings file="Settings.config">
  <add key="commonKey1" value="commonValue1" />
  <add key="commonKey2" value="commonValue2" />
  ... etc

非常好......所以这一切都归结为将configSource属性更改为file属性。现在它工作正常。