web-dev-qa-db-fra.com

Non concordance entre AddressFilter et EndpointDispatcher - le msg avec To

Toutes les idées comment je corrige cela .. appeler un service via js

Le message avec To 'http: //MySite.svc/GetStateXML' ne peut pas être traité sur le destinataire en raison d'une incompatibilité AddressFilter sur EndpointDispatcher. Vérifiez que l'adresse de l'expéditeur et celle du destinataire correspondent

merci

38
Jon

Je viens de le découvrir également en consultant un exemple du livre Learning WCF de Bustamante .nom attribut pour mon noeud final plutôt que l'attribut adresse. Une fois que j'ai résolu le problème, les choses ont fonctionné… J'ai trouvé un autre poste qui suggérait d'utiliser:

[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)] 

sur la classe d'implémentation, qui a fonctionné mais n'était pas la cause principale.

La ligne du bas semble être: assurez-vous que vos configurations client et serveur correspondent.

38
Sean B

L'erreur répertoriée ci-dessous indique que le service Web implémente l'adressage WS.

"Le message avec To '' ne peut pas être traité sur le destinataire en raison d'une incompatibilité AddressFilter sur EndpointDispatcher. Vérifiez que les adresses d'expéditeur et de destinataire 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>
25
Kishore Guruswamy

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 en mettant behaviorConfiguration="EndPointBehavior" dans ma endpoint avec 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>

8
SNag

Je sais que cela semble idiot, mais pour tous ceux qui ont cette erreur, vérifiez votre adresse. Nous obtenions cette erreur parce que nous avions une double barre oblique où il ne devrait y en avoir qu’une seule. 

http: //localhost//servicename.svc

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

http: //localhost/servicename.svc

N'a pas présenté le problème.

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

7
Aaron Havens

J'ai eu le même genre de problème, juste pour être complet: 

  • J'ai utilisé visual studio 2017 
  • J'avais besoin de créer un service wcf sur une ancienne application utilisant .net 3.5
  • Il devrait être exposé comme un service de savon et comme un service de "repos"

la configuration que je devais utiliser (pour la partie repos) était la suivante: 

il existe une configuration pour le comportement service et le comportement endpoint

      <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>
0
Cedric Dumont

J'ai eu ce problème dans mon environnement de développement pour un service Web hébergé dans IIS. Résolu le problème en accédant à «Gestionnaire des services Internet» et en ajoutant une liaison au nom d'hôte faisant l'objet de la plainte dans le message d'erreur.

0
maets

Dans mon cas, j'ai une application de bibliothèque de service WCF qui est un hôte de service RESTFul et Windows. J'ai eu un problème avec Host App.Config. S'il vous plaît voir ci-dessous

WCF Rest Service App.Config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.web>
    <compilation debug="true" />
  </system.web>
  <!-- When deploying the service library project, the content of the config file must be added to the Host's 
  app.config file. System.Configuration does not support config files for libraries. -->
  <system.serviceModel>
    <services>
      <service name="MyService.DocumentWCFRESTService" behaviorConfiguration="defaultServiceBehavior">
        <!-- Service Endpoints -->
        <!-- Unless fully qualified, address is relative to base address supplied above -->
        <endpoint address="http://localhost:2023/DocumentWCFRESTService" 
                  binding="webHttpBinding" behaviorConfiguration="webBehaviorConfiguration"
                  contract="MyService.IDocumentWCFRESTService" >
          <!-- 
              Upon deployment, the following identity element should be removed or replaced to reflect the 
              identity under which the deployed service runs.  If removed, WCF will infer an appropriate identity 
              automatically.
          -->
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <!-- Metadata Endpoints -->
        <!-- The Metadata Exchange endpoint is used by the service to describe itself to clients. -->
        <!-- This endpoint does not use a secure binding and should be secured or removed before deployment -->
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
        <Host>
          <baseAddresses>
            <add baseAddress = "http://localhost:8733/Design_Time_Addresses/Document.Server.WCFREST.Service/DocumentWCFRESTService/" />
          </baseAddresses>
        </Host>
      </service>
    </services>
    <serviceHostingEnvironment  multipleSiteBindingsEnabled="true" />
    <bindings> </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="defaultServiceBehavior">
          <!-- To avoid disclosing metadata information, 
          set the values below to false before deployment -->
          <serviceMetadata httpGetEnabled="True" httpGetUrl="http://localhost:2023/DocumentWCFRESTService"/>
          <!-- To receive exception details in faults for debugging purposes, 
          set the value below to true.  Set to false before deployment 
          to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="webBehaviorConfiguration">
          <webHttp />
        </behavior>
      </endpointBehaviors>

    </behaviors>
  </system.serviceModel>

</configuration>

Windows Service Host App.Config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>

  <system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding name="webHttpBindingConfiguration" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
                        maxArrayLength="2147483647" maxBytesPerRead="2147483647"
                        maxNameTableCharCount="2147483647" />
        </binding>
      </webHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>       
        <behavior name="documentWCFRESTServiceBehavior">
          <!-- To avoid disclosing metadata information, 
          set the values below to false before deployment -->
          <serviceMetadata httpGetEnabled="True" httpGetUrl="http://localhost:2023/DocumentWCFRESTService"/>
          <!-- To receive exception details in faults for debugging purposes, 
          set the value below to true.  Set to false before deployment 
          to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>               

      </serviceBehaviors>


      <endpointBehaviors>
        <behavior name="webBehaviorConfiguration">
          <webHttp />
        </behavior>
      </endpointBehaviors>
    </behaviors>

    <services>      
      <service name="MyService.DocumentWCFRESTService" behaviorConfiguration="documentWCFRESTServiceBehavior">
        <endpoint address="http://localhost:2023/DocumentWCFRESTService" behaviorConfiguration="webBehaviorConfiguration"
                  binding="webHttpBinding" bindingConfiguration="webHttpBindingConfiguration"
                  contract="MyService.IDocumentWCFRESTService"></endpoint>
      </service>
    </services>

  </system.serviceModel>
</configuration>
0
Ziggler

Ajoutez l'attribut webHttp à votre configuration:

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