Тип содержимого 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" />
Я надеюсь быть полезным