configSource在system.serviceModel *或*子节中不起作用

时间:2009-05-13 14:18:30

标签: c# .net winforms wcf configuration

我正在尝试将app.config文件拆分为多个文件,以便更轻松地管理不同环境所需的差异。有些部分很容易......

<system.diagnostics>
    various stuff
</system.diagnostics>

成了

<system.diagnostics configSource="ConfigFiles\system.diagnostics.dev" />

将“各种内容”移动到system.diagnostics.dev文件。

但对于system.serviceModel部分,这似乎不起作用。

现在我已经阅读了它对system.serviceModel本身不起作用的建议,但它适用于其下的部分:bindingsclientdiagnostics,但是当我尝试将configSource与其中一个一起使用时,同样的事情发生在我身上。当我放入

<system.serviceModel>
  <bindings configSource="ConfigFiles\whateverFile.dev" />

我明白了:

未声明'configSource'属性。

有没有人见过这个?你知道解决方案吗? (也许我有一个过时的架构或什么?)

3 个答案:

答案 0 :(得分:65)

VS.NET的编辑器对配置感到呻吟,但它确实有效。

我有这样的配置......

<system.serviceModel>
  <behaviors configSource="config\system.servicemodel.behaviors.config" />
  <bindings configSource="config\system.servicemodel.bindings.config" />
  <client configSource="config\system.servicemodel.client.config" />
</system.serviceModel>

......工作正常。

答案 1 :(得分:24)

它将 NOT <system.serviceModel>上工作,因为这是一个配置SectionGroup - 而不是配置部分。

在运行时在<system.serviceModel>以下的任何地方工作得很好 - 我们一直这样做。马丁的回答很好地说明了 - 他的样本会起作用。

答案 2 :(得分:6)

将配置部分移动到单独的文件时需要注意的一点是:确保分离的配置文件不包含configSource属性。例如,如果你将绑定部分分开,那么

<system.serviceModel>
    <bindings configSource="yourConfigFile.config" />
</system.serviceModel>

确保您的实际绑定文件不包含“configSource”属性:

<?xml version="1.0" encoding="utf-8"?>
<bindings>
    <!-- binding configuration stuff -->
</bindings>

我知道这似乎很明显,但是如果你输入configSource属性,然后剪切并粘贴到一个新文件中,很容易忘记取出该属性。

希望这有帮助。