Расширение WCF endpointBehaviors не обнаружено при наличии имени param?
Я пытаюсь расширить поведение моей конечной точки службы с помощью пользовательского MessageInspector, расширение работает нормально и оно подобрано, но только если я не определяю параметр "name" в теге поведения и не определяю конкретное поведение ConConfiguration на конечной точке. Это означает, что я расширяю все конечные точки, а это то, чего я не хочу. Может ли кто-нибудь объяснить мне, что я делаю не так?
Этот конфиг не подхватывает 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 ответ
Похоже, WCF вообще не подбирает ваш сервис и конфигурацию конечной точки. Возможно, потому что в вашем атрибуте контракта есть пробел. Таким образом, WCF по умолчанию использует конечную точку по умолчанию, определенную в файле конфигурации компьютера, что приводит к применению поведения по умолчанию. Проверьте название вашей услуги и контракта, убедитесь, что они соответствуют вашему коду.
http://blogs.msdn.com/b/endpoint/archive/2009/06/30/service-configuration-improvements-in-net-4.aspx