2010-10-25 16 views
4

J'essaie d'étendre mon comportement de point de terminaison de service avec MessageInspector personnalisé, l'extension fonctionne bien et est ramassée, mais seulement si je ne définis pas le paramètre "name" sur la balise de comportement et ne définissons pas behaviorConfiguration sur le point de terminaison. Cela signifie que j'étends tous les points de terminaison et c'est ce que je ne veux pas. Quelqu'un pourrait-il m'expliquer ce que je fais mal?L'extension WCF endpointBehaviors n'est pas détectée lorsque le nom param est présent?

Cette configuration ne prend pas en charge l'extension myBehaviour et n'échoue pas.

<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> 

Cependant la suppression

behaviorConfiguration="myBehaviour" 

et le changement de comportement étiquette de sorte que le nom n'est pas présent

<behavior> 
    <HeaderForwardExtension /> 
</behavior> 

fonctionne très bien.

Merci

+1

Désolé Je ne sais pas d'où cela vient, mais votre message vient de résoudre mon problème des deux derniers jours - je ne pouvais pas obtenir mon service à utiliser un behaviorExtension nommé, mais il n'a pas d'importance pour moi si l'extension est à l'échelle du service. – tomfumb

Répondre

0

Sons comme WCF ne piquez pas votre service et configuration des terminaux du tout. Probablement parce que votre attribut de contrat a un espace dedans. Par conséquent, WCF utilise par défaut le point de terminaison par défaut défini dans le fichier de configuration de la machine, ce qui entraîne l'application de comportements par défaut. Vérifiez vos noms de service et de contrat, assurez-vous qu'ils correspondent à votre code.

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