我可以组合WCF .config文件吗?

时间:2011-05-14 17:12:09

标签: wcf

是否可以组合app.config文件和web.config文件。我是自托管服务并在IIS中托管它,并发现自己必须编辑两个不同的文件?

3 个答案:

答案 0 :(得分:6)

是的,您可以将相关配置文件“外部化”为单独的文件,并引用app.configweb.config中的文件。

任何.NET配置部分都可以存储到外部配置文件中,因此您可以编写:

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

现在,您的外部文件看起来与配置中的相关配置部分完全相同:

<强> bindings.config

<?xml version="1.0" encoding="utf-8" />
<bindings>
   <basicHttpBinding>
       <binding name="......."  ...... />
   </basicHttpBinding>
</bindings>

注意:Visual Studio的编辑器会抱怨configSource=属性 - 但是Intellisense混淆了 - 每个配置部分都存在configSource属性 ,而确实有效就好了!

注意#2:您无法将整个<system.serviceModel>外部化,因为这是配置部分组 - 不幸的是,这些都没有任何方法可以放入外部文件。

答案 1 :(得分:0)

是的,你可以。只需将app.config中的<appSettings>部分添加到web.config中,然后根据需要进行合并。

答案 2 :(得分:0)

过去当我想从自定义文件位置读取serviceModel配置部分时,我已经定义了System.ServiceModel.ServiceHost的自定义子类,然后传递了自定义配置文件的位置到那个子类。

此处描述了该技术:Reading WCF Configuration From a Customer Location

使用这种技术,您应该能够,与marc_s声明的相反,将整个服务配置放在您的IIS配置文件中的WCF配置文件(app.config,我推测)中,然后传递位置IIS配置文件到自定义ServiceHost子类,如上所述。