【问题标题】:WCF endpointBehaviors extension not picked up when the name param is present?存在名称参数时未拾取 WCF endpointBehaviors 扩展?
【发布时间】:2011-04-30 05:53:45
【问题描述】:

我正在尝试使用自定义 MessageInspector 扩展我的服务端点行为,扩展工作正常并且它被拾取,但前提是我没有在行为标签上定义“名称”参数并且没有在端点上定义特定的 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>

工作得很好。

谢谢

【问题讨论】:

  • 对不起,我不知道这是从哪里来的,但你的帖子刚刚解决了我过去两天的问题——我无法让我的服务使用命名的 behaviorExtension,但这并不重要如果扩展程序是服务范围的,我。

标签: wcf wcf-behaviour wcf-endpoint


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 2013-08-12
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    相关资源
    最近更新 更多