web-dev-qa-db-de.com

Der Inhaltstyp text/html; charset = UTF-8 der Antwortnachricht stimmt nicht mit dem Inhaltstyp der Bindung überein (text/xml; charset = utf-8)

Ich habe den WCF-Dienst erstellt und den WCF-Client mit einer eigenständigen Anwendung getestet. Ich konnte diesen Dienst mit dem Internet Explorer anzeigen und in Visual Studio-Dienstreferenzen anzeigen. Hier ist die Fehlermeldung.

"The content type text/html; charset=UTF-8 of the response message does not match the content type of the binding (text/xml; charset=utf-8)."

Könnten Sie bitte raten, was falsch sein könnte?

Vielen Dank.

13
nav100

Da der zurückgegebene Inhaltstyp text/html ist, vermute ich, dass Ihr Aufruf außerhalb des WCF zu einem serverseitigen Fehler führt (Sie erhalten eine HTML-Fehlerseite).

Versuchen Sie, die Antwort mit einem Web-Debugging-Proxy wie Fiddler anzuzeigen.


(Bearbeiten basierend auf Kommentaren):

Aufgrund Ihrer Kommentare sehe ich, dass Ihre WCF auf einer formular authentifizierten Site unter Sharepoint 2010 gehostet wird.

Der Fehler, den Sie erhalten, ist auf die Tatsache zurückzuführen, dass Ihr WCF-Client NICHT mit sharepoint authentifiziert wird - er verfügt nicht über ein gültiges Authentifizierungs-Cookie. Sharepoint gibt dann eine HTTP-Umleitung an eine HTML-Seite zurück (die login.aspx-Seite). was von Ihrem WCF-Client nicht erwartet wird.

Um weiterzugehen, müssen Sie ein Authentifizierungs-Cookie von Sharepoint (siehe Authentication Web Service ) erhalten und an Ihren WCF-Client weiterleiten.


(Aktualisierte Bearbeitung):

Fehler: Die Site verwendet die anspruchsbasierte Authentifizierung.

Obwohl dies nicht unbedingt auf Cookies oder die Formularauthentifizierung zurückzuführen ist, bleibt die Erklärung der bereitgestellten Fehlermeldung unverändert. Ein Authentifizierungsproblem verursacht eine Umleitung zu einer HTML-Seite, die vom WCF-Client nicht behandelt wird.

17
Sam B

Dies kann hilfreich sein. Überprüfen Sie die Regeln zum Umschreiben der URL in ISS 7. Dieses Problem tritt auf, wenn Sie die Regel nicht ordnungsgemäß konfiguriert haben.

2
user2493343

Fügen Sie dem web.config-Serverprojekt den folgenden Code hinzu

<system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="basicHttpBinding_IService">
      <security mode="Transport">
        <transport clientCredentialType="None" proxyCredentialType="None"/>
      </security>
    </binding>
  </basicHttpBinding>
</bindings>

<services>
  <service name="Service">
    <endpoint address="" name="BasicHttpBinding_IService"
              binding="basicHttpBinding"
              bindingConfiguration="basicHttpBinding_IService"
              contract="IService" />
  </service>

aktualisieren Sie anschließend den Client-Webdienst. Nach dem Update werden folgende Änderungen vorgenommen: web.config

<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpBinding_IService">
      <security mode="Transport" />
    </binding>
  </basicHttpBinding>
</bindings>


  <endpoint address="https://www.mywebsite.com/Service.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService"
    contract="Service.IService" name="BasicHttpBinding_IService" />

Ich hoffe nützlich zu sein

0
vajihe

Es hört sich an, als ob Ihre Anwendung XML erwartet, aber nur Text empfängt. Welche Art von Objekt passieren Sie?

0
smartcaveman

text/html ist SOAP 1.1-Header und Content-Type: application/soap + xml ist SOAP. 1.2. Überprüfen Sie Ihre Bindungen und geben Sie den Header zurück. __

0
Taran