通过config将服务/端点行为添加到多个服务

时间:2015-08-20 13:54:49

标签: c# wcf

在我的项目中,有多个WCF服务被公开。我想为所有这些服务添加服务和端点行为。 我创建了这些行为,如下所示。

<behaviors>
      <endpointBehaviors>
        <behavior name="RequestInspectorBehavior">
          <RequestInspectorBehaviorExtension />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="webby">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <RequestInspectorBehaviorExtension />
        </behavior>
      </serviceBehaviors>
</behaviors>

现在有一个选择,我可以将这些添加到我的个人服务中,如下所示。

<service name="Service1" behaviorConfiguration="webby">
<endpoint address="" behaviorConfiguration="RequestInspectorBehavior" binding="webHttpBinding" contract="CONTRACT_GOES_HERE" />

    

但我想知道的是,有一种方法可以为我的所有服务提供此服务和端点行为,而无需通过每个服务的名称显式添加这些服务。

1 个答案:

答案 0 :(得分:1)

使用WCF 4.0+,您可以通过省略配置的相应行为部分中的bash: no job control in this shell Amandas-MacBook-Pro:puffshell amanda$ tty /dev/ttys002 Amandas-MacBook-Pro:puffshell amanda$ Amandas-MacBook-Pro:puffshell amanda$ ps PID TTY TIME CMD 2055 ttys000 0:00.05 -bash 2158 ttys000 0:00.01 /bin/bash 2170 ttys000 0:00.11 puffd 2171 ttys000 0:00.01 /bin/bash --login Amandas-MacBook-Pro:puffshell amanda$ 属性,将行为设置为所有服务和/或端点的默认行为。绑定也是如此。

在您的情况下,以下情况应该有效:

name

由于端点和服务行为都没有<behaviors> <endpointBehaviors> <behavior> <RequestInspectorBehaviorExtension /> </behavior> </endpointBehaviors> <serviceBehaviors> <behavior> <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="true" /> <RequestInspectorBehaviorExtension /> </behavior> </serviceBehaviors> </behaviors> 属性,因此它们将用作所有服务和端点行为的默认值。

因此,您的服务和端点定义如下所示:

name

如果您的服务或端点需要的东西不是您定义的默认值,您只需添加定义,然后在服务或端点元素的相应属性中引用它们。

默认端点,绑定和行为非常强大且有用(尽管它们也引起了一些令人头疼的问题)。有关详细信息,请查看A Developer's Introduction To Windows Communication Foundation 4