J'essaye de créer un service qu'un tiers devrait consommer.
Le consommateur est compatible avec SOAP 1.1, c'est pourquoi j'utilise basicHttpBinding pour le serveur. Lorsque la demande est faite, quelque chose ne va pas avec les types de contenu attendus par le serveur. En utilisant basicHttpBinding, je ne comprends pas pourquoi le serveur attend encore 'application/soap + xml' qui, à ma connaissance, n'est requis que par SOAP 1.2.
J'ai utilisé wireshark pour comprendre exactement ce que les deux communiquaient. Voir le flux et la configuration de tcp ci-dessous.
Toute aide est appréciée.
WCF et savon 1.1
demande app 3ème partie
POST/HTTP/1.1
SOAPAction: http://tempuri.org/ITestService/Hello
Content-Type: text/xml; charset = utf-8
hôte: shdesktop: 8000
Content-Length: 297
Attendez-vous à: 100 continuer
Connexion: Fermer
réponse WCF Server
HTTP/1.1 415 Impossible de traiter le message car le type de contenu 'text/xml; charset = utf-8 'n'était pas le type attendu ' application/soap + xml; jeu de caractères = utf-8 '.
Content-Length: 0
serveur: Microsoft-HTTPAPI/2.0
Date: Mar Feb 2010 14:03:19 09 GMT
Connection: close
Configuration du service
<system.serviceModel>
<services>
<service behaviorConfiguration="behTestService" name="ConsoleApplication1.TestService">
<endpoint address="" binding="mexHttpBinding" contract="IMetadataExchange" />
<endpoint address="TestService" binding="basicHttpBinding"
contract="ConsoleApplication1.ITestService" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="behTestService">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
oh, SOAP 1.1 utiliserait 'application/soap + xml'? Je vais tester le webHttpBinding demain, merci! Je sais pertinemment que cela fonctionne quand je crée un simple service asmx, si cela fait une différence. –
@Silas: les services Web ASP.NET "old-style" (ASMX) ** et ** WCF basicHttpBinding utilisent SOAP 1.1 - cela devrait donc être correct. Vous devez vérifier si votre client vous envoie une requête SOAP, ou tout simplement essayer de poster un fichier XML à votre URL –
j'appelle http: // au lieu que je devais appeler http: // /TestService. Erreur stupide de ma part. Merci pour toute l'aide si! –