2010-01-14 4 views
0

J'ai une application de console simple qui s'exécute en tant qu'hôte de service WCF. bsicHttpBinding est utilisé. Lorsque je tente d'obtenir la référence de service dans mon client (une autre application de la console) Je reçois cette erreurExécution du service WCF sur Vista 64 bits

"Il y a eu une erreur pendant le téléchargement http: // localhost:. 9999/TS La requête a échoué avec l'état HTTP 400 : Les métadonnées contiennent une référence qui ne peut pas être résolue: 'http: // localhost: 9999/TS' Type de contenu application/soap + xml; charset = utf-8 n'était pas pris en charge par le service http://localhost:9999/TS. Le serveur distant a renvoyé une erreur: (415) Impossible de traiter le message car le type de contenu 'application/soap + xml; charset = utf-8' n'était pas le type attendu 'text/xml; charset = utf-8 '.. Si le service est défini dans la solution actuelle, essayez de créer la solution et d'ajouter à nouveau la référence de service. "

Veuillez fournir des pointeurs.

App.config:

<configuration> 
    <system.serviceModel> 
     <services> 
      <service 
       name="TimeServiceLibrary.TimeService" 
       behaviorConfiguration="TSConfig"> 
       <endpoint address="localhost:9999/TS" 
        binding="basicHttpBinding" 
        contract="TimeServiceLibrary.ITime"> 
       </endpoint> 
      </service> 
     </services> 
     <behaviors> 
      <serviceBehaviors> 
       <behavior name="TSConfig"> 
        <serviceMetadata httpGetEnabled="True"/> 
       </behavior> 
      </serviceBehaviors> 
     </behaviors> 
    </system.serviceModel> 
</configuration> 

Répondre

0

L'erreur semble indiquer qu'il tente d'utiliser SOAP 1.2 sur une wsHttpBinding à la place, mais je ne suis pas certain pourquoi encore (doit être un manque de café). Cela peut être utile si vous avez posté les parties pertinentes de votre fichier de configuration, ou si vous l'avez téléchargé quelque part s'il est trop grand.

Lorsque vous naviguez vers http://localhost:9999/TS/?WSDL, qu'est-ce que vous obtenez?

Avez-vous configuré un point de terminaison mex (échange de métadonnées)? Voir here pour un exemple de configuration.

+0

Je reçois la même erreur de statut HTTP 400 sur mon navigateur. Impossible d'afficher les métadonnées de mon service. –

+0

Voici comment mon app.config ressemble: \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t

+1

Donc, pas encore de point de terminaison mex? J'ai ajouté la config à votre question pour la lisibilité. – Thorarin

0

Eh bien, la liaison HTTP de base utilise SOAP 1.1 sous le capot, qui à son tour utilise un type de contenu de text/xml. La nouvelle liaison WS-HTTP utilise SOAP 1.2, qui utilise un type de contenu application/soap+xml. WCF se plaint parce qu'il semble que votre service est configuré pour utiliser une liaison HTTP de base avec un type de contenu application/soap+xml, ce qui ne va pas fonctionner.

Peut-être que vous pourriez essayer d'ajouter http:// avant localhost dans l'adresse, ou tout simplement utiliser TS pour l'adresse, et préciser http://localhost:9999 dans un élément d'adresse de base, par exemple à l'intérieur de l'élément <service>:

<baseAddress> 
    <add baseAddress="http://localhost:9999/" /> 
</baseAddress> 
Questions connexes