Тип содержимого text/html; charset = UTF-8 ответного сообщения не соответствует типу содержимого привязки (text/xml; charset = utf-8)

Я создал службу WCF и тестировал WCF-клиент, используя автономное приложение. Мне удалось просмотреть эту службу, используя Internet Explorer, которая также может просматривать ссылки на Visual Studio. Вот сообщение об ошибке.

"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)."

Не могли бы вы посоветовать, что может быть неправильным?

Спасибо.

Ответы

Ответ 1

Поскольку возвращаемый тип содержимого text/html, я подозреваю, что ваш результат вызова возникает на стороне сервера вне WCF (вы получаете страницу с ошибкой HTML).

Попробуйте просмотреть ответ с помощью прокси-сервера отладки, такого как Fiddler.


(Редактировать на основе комментариев):

Основываясь на ваших комментариях, я вижу, что ваш WCF размещен в Sharepoint 2010 на сайте, прошедшем проверку подлинности.

Ошибка, которую вы получаете, связана с тем, что ваш клиент WCF НЕ аутентифицирован с помощью sharepoint - у него нет действительного файла cookie для проверки подлинности. Затем Sharepoint возвращает HTTP-переадресацию на страницу html (страница login.aspx); который не ожидается вашим клиентом WCF.

Чтобы продолжить, вам нужно будет получить файл cookie проверки подлинности из Sharepoint (см. Веб-служба проверки подлинности) и передать его клиенту WCF.


(Обновлено редактирование):

Ошибка: сайт использует аутентификацию на основе утверждений.

Хотя это необязательно связано с cookie файлами или аутентификацией формы, объяснение предоставленного сообщения об ошибке остается неизменным. Проблема аутентификации вызывает перенаправление на HTML-страницу, которая не обрабатывается клиентом WCF.

Ответ 2

Это может быть полезно, проверьте правила перезаписи URL-адресов в ISS 7. Эта проблема возникает, если вы неправильно настроили правило.

Ответ 3

Похоже, ваше приложение ожидает XML, но получает простой текст. Какой тип объекта вы проходите?

Ответ 4

text/html - заголовок SOAP 1.1 и Content-Type: application/soap + xml - SOAP 1.2 Проверьте свои привязки и верните заголовок. Он должен быть таким же или 1.1 или 1.2

Ответ 5

Добавьте следующий код в проект сервера web.config

<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>

а затем обновить веб-службу клиента. После обновления будут внесены следующие изменения: 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" />

Я надеюсь быть полезным