2012-02-15 66 views
32

¿Ideas cómo corregir este .. llamar a un servicio a través de JSAddressFilter falta de coincidencia en el EndpointDispatcher - msg con Para

El mensaje con A 'http: //MySite.svc/GetStateXML' no puede ser procesada en el receptor, debido a una falta de coincidencia de AddressFilter en el EndpointDispatcher. Compruebe que el remitente y el receptor de EndpointAddresses están de acuerdo

gracias

+0

¿Puede mostrarnos el archivo de configuración del servicio? –

Respuesta

0

Mira <webHttp />

<services> 
     <service name="SimpleService.SimpleService" behaviorConfiguration="serviceBehaviour"> 
     <endpoint address="" binding="webHttpBinding" contract="SimpleService.ISimpleService" behaviorConfiguration="web"> 
     </endpoint> 
     <endpoint address="mex" 
       binding="mexHttpBinding" 
       contract="IMetadataExchange"> 
     </endpoint> 
     </service> 
    </services> 

.... 
.... 

<endpointBehaviors> 
     <behavior name="web"> 
      <webHttp /> 
     </behavior> 
</endpointBehaviors> 
+4

¿Por qué está marcado como la respuesta? No ayuda. –

+0

Es vago, pero al usar este formato (específicamente los dos puntos finales) el problema se puede resolver. Asegúrese de que todos los nombres coincidan con sus servicios definidos. Cambié el nombre del servicio, eliminé la configuración de comportamiento del servicio y cambié el primer contrato de punto final. –

34

Me acabo de encontrar con esto también, mientras que ir a través de un ejemplo en el aprendizaje WCF libro de Bustamante. Había utilizado el Editor de configuración WCF para completar mi configuración en mi host y había puesto el valor en el atributo nombre para mi punto final en lugar del atributo dirección. Una vez que lo arreglé, las cosas funcionaron. encontré otro post que sugirió el uso de:

[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)] 

en la clase de implementación, lo que trabajó, pero no fue la causa raíz.

La línea inferior parece ser: asegúrese de que las configuraciones de su cliente y servidor coincidan.

+0

para VB.NET el código es: Tengo que decir que esto funcionó bien para mí como la persona que llama externa no estaba suministrando el elemento en el mensaje SOAP. – robnick

16

El error que se muestra a continuación indica que el servicio web implementa WS-Addressing.

"El mensaje con A '' no pueden ser procesados ​​en el receptor, debido a una falta de coincidencia AddressFilter en el EndpointDispatcher. Compruebe que el remitente y del receptor EndpointAddresses de acuerdo"

incluir lo siguiente en sus encabezados SOAP para acceder a la Servicio web:

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

¡Esta respuesta salvó mi día! Además, esta respuesta fue muy útil: http://stackoverflow.com/a/15056211/1795351 –

0

Tuve este problema en mi entorno de desarrollo para un servicio web alojado en IIS. Lo resolvió yendo a 'Administrador de IIS' y agregó un enlace al nombre de host que se ha quejado en el mensaje de error.

8

Recibí este error mientras estaba usando webHttpBinding.

me lo resolvió mediante la adición de

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

bajo <behaviors> y el establecimiento de behaviorConfiguration="EndPointBehavior" en mi endpoint con binding="webHttpBinding".

configuración completa:

<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

Esto me permitió pasar el mensaje de error, pero me llevó directamente a una respuesta '405 método no permitido'. ¿Alguna idea que pueda estar relacionada con tu respuesta? – Matt

+0

Contexto completo: http://stackoverflow.com/questions/34647328/manually-configuring-a-new-wcf-endpoint/34647637#34647637 – Matt

5

Sé que suena tonto, pero para cualquier otra persona que tenga este error, verifique su dirección.Estábamos recibiendo este error porque teníamos una barra doble donde debería haber sido solo uno.

http://localhost//servicename.svc

La dirección anterior causó el problema.

http://localhost/servicename.svc

no exhibió el problema.

Estamos creando dinámicamente la dirección completa de partes de datos leídos desde formularios de Windows y una base de datos. El usuario estaba entrando /servicename.svc en lugar de servicename.svc

+1

Gracias por compartir su solución. Tuve un error similar. Mi aplicación hace referencia a una biblioteca que hace referencia al servicio web. Tenía un nombre de Camel Case para el servicio web, pero el servicio web se implementó en IIS con un guión bajo, no con un nombre de caja de camello. Cambiar el nombre en la biblioteca a la versión de guión lo resolvió. Es por eso que es importante ser coherente con el nombramiento de los recursos. –

+0

Sé que suena tonto, ¡pero yo también tuve el mismo problema! :) – Nisarg

0

Agregar webHttp atributo a su configuración:

endpointBehaviors 
     behavior name ="yourServiceContract" 
      webHttp automaticFormatSelectionEnabled ="true " 
     behavior 
0

que tenían el mismo tipo de problema, sólo para estar completa:

  • Utilicé visual studio 2017
  • Necesitaba crear un servicio wcf en una aplicación anterior usando .net 3.5
  • Debe estar expuesto como un servicio de jabón y una sa "resto" servicio

la configuración que tenía que utilizar (por parte de reposo) fue:

hay una configuración para el comportamiento servicio y el comportamiento punto final

 <system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="myServiceBehaviour"> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="webEndpointBehaviour"> 
      <webHttp /> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 

    <services> 
     <service name="My.Service" behaviorConfiguration="myServiceBehaviour"> 
     <endpoint address="" binding="webHttpBinding" contract="My.IService" behaviorConfiguration="webEndpointBehaviour"> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
     </service> 
    </services> 
    </system.serviceModel> 
Cuestiones relacionadas