名称参数存在时,WCF endpointBehaviors扩展名未被提取?

时间:2010-10-25 14:10:59

标签: wcf wcf-behaviour wcf-endpoint

我正在尝试使用自定义MessageInspector扩展我的服务端点行为,扩展工作正常并且它被选中,但前提是我没有在行为标记上定义“name”参数并且没有在端点上定义特定的behaviorConfiguration 。这意味着我正在扩展所有端点,这是我不想要的。谁能解释一下我做错了什么?

此配置不会选择myBehaviour扩展名,也不会失败。

<system.serviceModel>
   <services>
      <service name="testService">
        <endpoint address="http://localhost:9999/TestServiceService"
                  binding="wsHttpBinding"
                  contract="ITestService "
                  behaviorConfiguration="myBehaviour"
                  />
        <endpoint address="mex"
                  binding="mexHttpBinding" 
                  contract="IMetadataExchange"
                  />
      </service>
  </services>
  <behaviors>
      <endpointBehaviors>
        <behavior name="myBehaviour">
          <HeaderForwardExtension />
        </behavior>
      </endpointBehaviors>
  </behaviors>
  <extensions>
     <behaviorExtensions>
        <add name="HeaderForwardExtension" type="Test.Service.HeaderForwardBehavior, Test.Service, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
     </behaviorExtensions>
  </extensions>
</system.serviceModel>

然而删除

behaviorConfiguration="myBehaviour"

并更改行为标记,使名称不存在

 <behavior>
    <HeaderForwardExtension />
 </behavior>

工作正常。

谢谢

1 个答案:

答案 0 :(得分:0)

听起来好像WCF根本没有接收你的服务和端点配置。可能是因为您的合同属性中有空格。因此,WCF默认为机器配置文件中定义的默认端点,这会导致应用默认行为。检查您的服务和合同名称,确保它们符合您的代码。

http://blogs.msdn.com/b/endpoint/archive/2009/06/30/service-configuration-improvements-in-net-4.aspx