Ich versuche einen Dienst zu erstellen, den ein Drittanbieter hoffentlich konsumieren sollte.
Der Consumer ist kompatibel mit SOAP 1.1, weshalb ich basicHttpBinding für den Server verwende. Wenn die tatsächliche Anfrage erfolgt, scheint etwas mit den vom Server erwarteten Inhaltstypen zu schiefzugehen. Mit basicHttpBinding verstehe ich nicht, warum der Server immer noch 'application/soap + xml' erwartet, was meines Wissens nur von SOAP 1.2 benötigt wird.
Ich habe wiresharsh verwendet, um genau herauszufinden, worüber diese beiden kommuniziert haben. Siehe tcp-Stream und Setup unten.
Jede Hilfe wird geschätzt.
WCF und Soap 1.1
3rd party app Anfrage
POST/HTTP/1.1
Soapaction: http://tempuri.org/ITestService/Hello
Content-Type: text/xml; charset = utf-8
Host: shdesktop: 8000
Content-Length: 297
erwarten: 100-Continue
Anschluss: Schließen
WCF Server Antwort
HTTP/1.1 415 Die Nachricht kann nicht verarbeitet werden, da der Inhaltstyp 'text/xml; charset = utf-8 'war nicht der erwartete Typ' application/soap + xml; charset = utf-8 '.
Content-Length: 0
Server: Microsoft-HTTPAPI/2.0
Datum: Di, 9. Februar 2010 14.03.19 GMT
Anschluss: schließen
Servicekonfiguration
<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>
Im Allgemeinen
oh, würde SOAP 1.1 'application/soap + xml' verwenden? Ich werde das WebHttpBinding morgen testen, danke! Ich weiß für eine Tatsache, dass es funktioniert, wenn ich einen einfachen asmx-Service erstelle, wenn es einen Unterschied macht. –
@Silas: "alten Stil" ASP.NET Webservices (ASMX) ** und ** WCF basicHttpBinding verwenden SOAP 1.1 - so sollte das in Ordnung sein, wirklich. Sie müssen überprüfen, ob Ihr Client Ihnen eine SOAP-Anfrage sendet, oder nur versuchen, eine XML an Ihre URL –
Ich rief http: // statt ich musste http: // /TestService aufrufen. Dummer Fehler von mir. Danke für die Hilfe! –