WCF service binding content type mismatch - text/xml und application/soap+xml

Ich habe auf diese für ein paar Tage versucht, herauszufinden, warum ich bin immer ein content-type-mismatch-Fehler in meine Bindung. Es gibt unzählige andere Menschen, die scheinen zu sein mit diesem Problem, aber alle Auflösungen bewerben Sie sich nicht oder haben nicht funktioniert.

Ich habe sah überall versucht, herauszufinden, warum ich erhalte die folgende Fehlermeldung:

Server Error in '/' Application.

Dem content-type application/soap+xml; charset=utf-8 der Antwort-Nachricht nicht mit dem Inhaltstyp der Bindung (text/xml; charset=utf-8). Wenn Sie einen benutzerdefinierten encoder verwenden, sicher sein, dass die IsContentTypeSupported-Methode richtig umgesetzt wird. Die ersten 823 bytes der Antwort waren:

<?xml version="1.0" encoding="UTF-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><GetQuoteResponse xmlns="http://soap.service.GMO.com"><Quote_Response><errorMessage></errorMessage><return_List><item><errorMessage></errorMessage><monthlyPremiumAmount>6.0</monthlyPremiumAmount><webID>7P3W4Txst</webID><basePer1>1000.0</basePer1><basePer2>0.0</basePer2><baseRate1>0.05</baseRate1><baseRate2>0.0</baseRate2><benefitID>5365</benefitID><coverageAmount>100000</coverageAmount><grossPer1>1000.0</grossPer1><grossPer2>0.0</grossPer2><grossRate1>0.06</grossRate1><grossRate2>0.0</grossRate2></item></return_List></Quote_Response></GetQuoteResponse></soapenv:Body></soapenv:Envelope>.

Den web service, den ich bin das konsumieren ist nicht in IIS gehostet. Der web-Dienst selbst scheint ordnungsgemäß zu funktionieren, weil wir uns mit SoapUI und erhalten Sie alle richtigen Ergebnisse an uns zurückzusenden. Wie Sie sehen, auch aus der oben genannten Fehlermeldung, Werte werden derzeit durch den Webdienst zurückgegeben.

Habe ich auch schon mit Fiddler und bin in der Lage zu bestätigen, dass die request-header content-type ist text/xml-und der response-header content-type ist application/soap+xml.

Haben wir eine "datalayer", wo die service-Referenz befindet. Die app.config sieht wie folgt aus:

<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="IMSQuoteServiceBinding" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
                useDefaultWebProxy="true">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                <security mode="None">
                    <transport clientCredentialType="None" proxyCredentialType="None"
                        realm="" />
                    <message clientCredentialType="UserName" algorithmSuite="Default"  />
                </security>

            </binding>

        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://hostingServerName:81/cgi-bin/jsmdirect?IMSQuote"
            binding="basicHttpBinding" bindingConfiguration="IMSQuoteServiceBinding"
            contract="Quote.IMSQuoteServicePortType" name="IMSQuoteServicePort" />
    </client>
</system.serviceModel>

Die web-site web.config sieht wie folgt aus:

<system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="IMSQuoteServiceBinding" closeTimeout="00:01:00"
        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
        allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
        maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
        messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
        useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
          maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <security mode="None">
        <transport clientCredentialType="None" proxyCredentialType="None"
            realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>

    </binding>
  </basicHttpBinding>    

</bindings>
<client>
  <endpoint address="http://hostingServerName:81/cgi-bin/jsmdirect?IMSQuote"
      binding="basicHttpBinding" bindingConfiguration="IMSQuoteServiceBinding"
      contract="Quote.IMSQuoteServicePortType" name="IMSQuoteServicePort" />
</client>

Jegliche Hilfe würde sehr geschätzt werden. Ich bin etwas neu auf WCF und bin offen für alle Ideen.

Danke Euch allen im Voraus für Ihre Hilfe. Wenn Sie mich brauchen, um alle weitere Informationen, bitte lassen Sie mich wissen.

  • Nur um zu bestätigen, wenn Sie Fiddler ändern Sie die server-response-Content-Type-header auf text/xml; charset=utf-8, hat der Kunde akzeptieren?
  • Ich habe nicht versucht. Ich werde versuchen Sie es und lassen Sie wissen. Danke für die Idee.
InformationsquelleAutor user1895520 | 2012-12-11
Schreibe einen Kommentar