Клиент службы WCF: текст типа контента / html; charset = utf-8 ответного сообщения не соответствует типу содержимого привязки

У меня есть служба WCF, работающая на моем локальном сервере IIS. Я добавил его в качестве ссылки на сайт для проекта C # Website, и он добавляет штраф и автоматически генерирует classы прокси.

Однако, когда я пытаюсь вызвать любой из контрактов на обслуживание, я получаю следующую ошибку:

Описание: Необработанное исключение возникло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде.

Сведения об исключении: System.ServiceModel.ProtocolException: тип содержимого text / html; charset = utf-8 ответного сообщения не соответствует типу содержимого привязки (application / soap + xml; charset = utf-8). Если вы используете пользовательский кодер, убедитесь, что метод IsContentTypeSupported реализован правильно. Первые 1024 байта ответа были: «function bredir (d, u, r, v, c) {var w, h, wd, hd, bi; var b = false; var p = false; var s = [[ 300250, ложный], [250250, ложный], [240400, ложный], [336280, ложный], [180150, ложный], [468,60, ложный], [234,60, ложный], [88,31, ложь], [120,90, ложный], [120,60, ложный], [120240, ложный], [125125, ложный], [728,90, ложный], [160600, ложный], [120600, ложный] , [300600, ложный], [300125, ложный], [530300, ложный], [190200, ложный], [470250, ложный], [720300, верно], [500350, верно], [550480, правда]]; if (typeof (window.innerHeight) == ‘number’) {h = window.innerHeight; w = window.innerWidth;} else if (typeof (document.body.offsetHeight) == ‘number’) {h = document. body.offsetHeight; w = document.body.offsetWidth;} for (var i = 0; i

У меня также есть консольное приложение, которое также взаимодействует с WCF-сервисом, и консольное приложение умеет эффективно вызывать методы, не получая эту ошибку.

Ниже приведены выдержки из моих конфигурационных файлов.

Служба WCF Web.Config:

                                

Веб-сайт Project Service Client Web.Config :

                      

Это моя первая попытка создать WCF, так что это все очень новое. Буду признателен за любую оказанную помощь.

Благодарю.

Попробуйте выполнить поиск в http: //localhost/ScraperService.svc в веб-браузере на сервере, на котором размещена служба, с использованием тех же учетных данных Windows, которые обычно выполняются клиентом.

Я предполагаю, что IIS отображает сообщение об ошибке html некоторого описания вместо того, чтобы возвращать xml, как ожидалось.

Это также может произойти, если у вас есть HTTP-прокси-сервер, который выполняет фильтрацию через Интернет. Мой опыт с ContentKeeper заключается в том, что он перехватывает любой трафик http / https и блокирует его как «Неуправляемый контент» – все, что мы получаем, это сообщение об ошибке html. Чтобы этого избежать, вы можете добавить правила исключения прокси-сервера в Internet Explorer, чтобы прокси-сервер не перехватывал трафик на ваш сайт:

Панель управления> Свойства обозревателя> Соединения> Параметры локальной сети> Дополнительно> Настройки прокси-сервера

введите описание изображения здесь

Ответ HTML от веб-сервера обычно указывает, что вместо ответа от службы WCF была показана страница с ошибкой. Мое первое предложение было бы проверить, что пользователь, у которого работает клиент WCF, имеет доступ к ресурсу.

что вы пытаетесь получить доступ к службе с помощью wsHttpBind, которые по умолчанию используют защищенные зашифрованные сообщения (защищенные сообщения). С другой стороны, netTcpBind использует защищенные зашифрованные каналы. (Обеспеченный транспорт) … НО basicHttpBind, не требует никакой безопасности вообще и может получить доступ к анонимным

ТАК. на стороне сервера, добавьте \ Измените это в свою конфигурацию.

           

затем добавьте изменение своей конечной точки в

  

Это должно сделать это.

У меня была аналогичная проблема. Я разрешил это, изменив

  

в

  

а также изменил мой URL-адрес, чтобы использовать https: // вместо http: //.

Также в узле измените

 binding="basicHttpBinding" 

в

 binding="basicHttpsBinding" 

Это сработало.

В моем случае правило перезаписи URL-адресов было испорчено с моим именем службы, оно было переписано как строчное, и я получал эту ошибку.

Убедитесь, что вы не выполняете строчные вызовы службы WCF.

Как и во многих случаях, в моей ситуации я тоже получал это из-за ошибки. И, к сожалению, я мог просто прочитать CSS страницы html error.

Источником моей проблемы было также правило перезаписи на сервере. Он переписывал http на https.

Вы можете проверить конфигурацию своей службы и убедиться, что все в порядке. Вы можете перейти к веб-сервису через браузер, чтобы увидеть, будет ли схема отображаться в браузере.

Вы также можете просмотреть учетные данные, используемые для вызова службы.

Я попробовал все вышеперечисленные предложения, но в итоге работала с измененным конвейером, управляемым пулом приложений, от интегрированного режима до classического.
Он работает в своем собственном пуле приложений, но это был первый сервис .NET 4.0 – все остальные сервисы на .NET 2.0, используя встроенный режим конвейера. Его стандартным сервисом WCF является https, но на сервере 2008 (не R2) – с использованием IIS 7 (не 7.5).

У меня была аналогичная ситуация, но клиентская конфигурация использовала basicHttpBinding. Проблема заключалась в том, что служба использовала SOAP 1.2, и вы не можете указать SOAP 1.2 в basicHttpBinding. Я изменил конфигурацию клиента, чтобы вместо этого использовать customBinding, и все сработало. Вот подробности моего customBinding для справки. Служба, которую я пыталась использовать, была через HTTPS с использованием UserNameOverTransport.

            

Даже если вы не используете сетевой прокси, включение «Автоматическое обнаружение настроек» в диалоговом окне прокси делает это исключение.

введите описание изображения здесь

В моем проектном проекте WCF эта проблема связана с ссылкой на другую версию System.Web.Mvc.dll. Таким образом, это может быть проблема совместимости с другой версией DLL

Когда я использую

System.Web.Mvc.dll версия 5.2.2.0 -> это вызывает ошибку Тип контента text / html; charset = utf-8 ответного сообщения

но когда я использую System.Web.Mvc.dll версии 4.0.0.0 или ниже -> он отлично работает .

Я не знаю причины проблемы с другой версией DLL, но, изменив верификацию DLL, она работает для меня.

Эта ошибка даже генерируется при добавлении ссылки другого проекта в проект WCF, и этот справочный проект имеет другую версию DLL System.Web.Mvc или может быть любой другой DLL.

X ++ binding = endPoint.get_Binding(); binding.set_UseDefaultWebProxy(false); binding = endPoint.get_Binding(); binding.set_UseDefaultWebProxy(false);

Я решил эту проблему, установив UseCookies в web.config.

    

и настройка enableVersionHeader

    

Если вы используете как wshttpbinding вместе с https-запросом, затем я разрешил его, используя приведенное ниже изменение конфигурации.

      

Для меня проблема была решена, когда я прокомментировал следующую строку в Web.config

  
  • Лучший способ вызова JSON WebService из .NET Console
  • Весна: загрузка файла RESTFUL Web Service
  • Вернуть JSON из веб-службы ASMX без оболочки XML?
  • jqgrid добавить строку и отправить данные в webservice для вставки
  • В чем разница между веб-методом asp.net и службой wcf?
  • Вызов метода на стороне сервера ASP.NET через jQuery
  • Как отправить запрос SOAP с помощью WebServiceTemplate?
  • Потребляйте веб-службу SOAP, не полагаясь на app.config
  • JQuery Ajax Проводка json для webservice
  • Шаги по созданию веб-службы с использованием Axis2 - Код клиента
  • Как вручную установить веб-сервис на Tomcat 6?
  • Давайте будем гением компьютера.