在我的项目中,有多个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" />
但我想知道的是,有一种方法可以为我的所有服务提供此服务和端点行为,而无需通过每个服务的名称显式添加这些服务。
答案 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。