4

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

此配置不会获取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>

工作得很好。

谢谢

4

1 回答 1

0

听起来 WCF 根本不会获取您的服务和端点配置。可能是因为您的合同属性中有一个空格。因此,WCF 默认使用机器配置文件中定义的默认端点,这会导致应用默认行为。检查您的服务和合同名称,确保它们与您的代码匹配。

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

于 2013-04-17T07:21:23.820 回答