使用标准webHttpEndpoint的自定义端点行为

时间:2011-04-05 22:58:58

标签: .net wcf wcf-binding

我们目前有一个有效的REST WCF服务。我正在尝试为错误处理实现自定义行为,该行为将返回自定义JSON对象。我相信这里找到的文章WCF Exception Handling with IErrorHandler可以解决问题,但是,该示例显示了如何通过代码添加行为。我们通过IIS托管服务,没有ServiceHost。任何人都可以指导我如何将我的自定义错误处理类添加到web.config?

我在Google和SO上搜索过并找到了一些与我想要完成的内容相近的例子,但我对WCF的理解可能会让我无法完全理解。

以下是我们为端点配置的所有内容。

<standardEndpoints>
  <webHttpEndpoint>
    <!-- 
        Configure the WCF REST service base address via the global.asax.cs file and the default endpoint 
        via the attributes on the <standardEndpoint> element below
    -->
    <standardEndpoint helpEnabled="true" automaticFormatSelectionEnabled="false"/>
  </webHttpEndpoint>
</standardEndpoints>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>        
   </serviceBehaviors>
</behaviors>

1 个答案:

答案 0 :(得分:4)

不幸的是,你必须编写一些代码。诀窍是将代码放在类库中,然后配置web.config以使用该代码。

从您正在使用的示例中复制ErrorHandlerServiceBehavior类,将其编译到您的WCF项目中。

创建行为扩展名:

<extensions>
    <behaviorExtensions>
        <add name="myBehavior" type="MyLibrary.ErrorHandlerServiceBehavior, MyLibrary,
            Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
   </behaviorExtensions>
</extensions>

将行为扩展应用于行为配置:

<behaviors>
    <behavior configurationName="testBehaviorConfiguration">
        <myBehavior />
    </behavior>
</behaviors>

将行为配置应用于服务:

<services>
    <service name="MyLibrary.MyService"   
      behaviorConfiguration="testBehaviorConfiguration">
        <endpoint binding="basicHttpBinding" 
          contract="MyLibrary.IMyService"/>
    </service>
</services>