50 votes

AddressFilter mismatch au EndpointDispatcher - le msg avec To

Une idée sur la façon de corriger cela appeler un service via js

Le message avec To 'http://MySite.svc/GetStateXML' ne peut pas être traité par le récepteur, en raison d'une erreur d'AddressFilter dans le EndpointDispatcher. Vérifiez que les EndpointAddresses de l'expéditeur et du destinataire correspondent.

merci

0 votes

Pouvez-vous nous montrer le fichier de configuration du service ?

45voto

Sean B Points 2086

Je viens juste de rencontrer ce problème en parcourant un exemple dans l'application Apprendre WCF livre de Bustamante. J'avais utilisé le WCF Config Editor pour remplir ma configuration sur mon hôte et j'avais mis la valeur dans le champ nom pour mon point de terminaison plutôt que l'attribut adresse attribut. Une fois que je l'ai corrigé, tout a fonctionné. J'ai trouvé un autre message qui suggérait d'utiliser :

[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)] 

sur la classe d'implémentation, ce qui a fonctionné mais n'était pas la cause première.

En résumé, il faut s'assurer que les configurations du client et du serveur correspondent.

44voto

Kishore Guruswamy Points 1543

L'erreur listée ci-dessous indique que le service Web implémente le WS-Addressing.

"Le message avec To '' ne peut pas être traité par le récepteur, en raison d'une incompatibilité AddressFilter au niveau du EndpointDispatcher. Vérifiez que les EndpointAddresses de l'expéditeur et du destinataire correspondent"

Incluez les éléments suivants dans vos en-têtes SOAP pour accéder au service Web :

<soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
<wsa:To>http://example.com/service</wsa:To>
</soap:Header>

0 votes

Cette réponse a sauvé ma journée ! Cette réponse a également été très utile : stackoverflow.com/a/15056211/1795351

0 votes

Ceci devrait être marqué comme la réponse correcte. Fonctionne parfaitement.

0 votes

Une réponse concrète et directe qui a résolu mon problème instantanément ! Je ne savais pas quoi faire de la moitié de ces réponses dans le contexte de ce message d'erreur réel. Cette réponse était suffisamment concise pour que, même si elle n'avait pas fonctionné, je n'aie pas perdu beaucoup de temps. Bravo !

10voto

SNag Points 1342

J'ai eu cette erreur alors que j'utilisais webHttpBinding .

Je l'ai résolu en ajoutant

<endpointBehaviors>
  <behavior name="EndPointBehavior">
    <enableWebScript/>
  </behavior>
</endpointBehaviors>

sous <behaviors> et la mise en place behaviorConfiguration="EndPointBehavior" dans mon endpoint con binding="webHttpBinding" .

Configuration complète :

<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehavior">
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="EndPointBehavior">
      <enableWebScript/>
    </behavior>
  </endpointBehaviors>
</behaviors>

<services>
  <service name="WcfService1.Service1" behaviorConfiguration="ServiceBehavior">
    <endpoint address="" 
              binding="webHttpBinding" 
              contract="WcfService1.IService1" 
              behaviorConfiguration="EndPointBehavior">
    </endpoint>
    <endpoint address="mex" 
              binding="mexHttpBinding" 
              contract="IMetadataExchange">
    </endpoint>
  </service>
</services>

0 votes

Cela m'a permis de passer le message d'erreur, mais m'a conduit directement à une 405 method not allowed réponse. Des réflexions qui pourraient être liées à votre réponse ?

0 votes

9voto

Aaron Havens Points 238

Je sais que cela peut paraître idiot mais si quelqu'un d'autre a cette erreur, vérifiez votre adresse. Nous obtenions cette erreur parce que nous avions un double slash là où il n'y en avait qu'un.

http://localhost//servicename.svc

L'adresse ci-dessus a causé le problème.

http://localhost/servicename.svc

Le problème ne s'est pas présenté.

Nous créions dynamiquement l'adresse complète à partir de parties de données lues dans des formulaires Windows et dans une base de données. L'utilisateur saisissait /servicename.svc au lieu de servicename.svc.

0voto

maets Points 111

J'ai rencontré ce problème dans mon environnement de développement pour un service web hébergé dans IIS. Je l'ai résolu en accédant à "IIS Manager" et en ajoutant une liaison au nom d'hôte mentionné dans le message d'erreur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X