(405) Метод запрещен. WCF WebService

Введение:

Здравствуйте, я пытаюсь настроить веб-службу WCF на моем локальном сервере IIS 7.5, однако после завершения базовой конфигурации я не могу отправлять данные с помощью тестового клиента WinForms, и он возвращает ошибку, указанную в заголовках. Я уже искал похожие темы по этой проблеме, но не нашел ничего, что подходило бы к моей проблеме.

Данные:

-Как Wcf WebService, так и тестовый клиент предоставлены третьей стороной

-Они уже работают на другом сервере, и я использую те же версии

-Я, наверное, что-то делаю не так, когда включаю или настраиваю IIS

Запрос:

-Мне нужно знать, какие функции IIS мне нужно включить / отключить, чтобы правильно установить, чтобы я мог использовать Wcf WebService (в таком случае).

-Как правильно настроить сервер, чтобы решить указанную выше ошибку.

Мои конфигурации:

-После установки IIS я изменил DefaulAppPool на .NET Framework v4.0.30.319; конвейерный режим: интегрированный. -Расширенные настройки: Загрузить профиль пользователя = False.

-Создал новый веб-сайт с именем «WcfMicrocontrollerService» с использованием DefaultAppPool.Binding; Тип: http, IP-адрес:, порт: 80

На этом этапе я могу получить к нему доступ через веб-браузер, однако, когда я использую тестовый клиент для отправки данных POST в службу, я получаю следующую ошибку: «Удаленный сервер вернул неожиданный ответ: (405) Метод не разрешен. "

Вот пакеты данных, отправленные как записанные Fiddler: Отправлено:

POST http://192.168.0.102/MicroControllerComSvc.svc HTTP/1.1
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://tempuri.org/IMicroControllerComSvc/GetMicrocontrollerData"
Host: 192.168.0.102
Content-Length: 237
Expect: 100-continue
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><GetMicrocontrollerData xmlns="http://tempuri.org/"><microControllerData>1,1,1,1,2,2,1,0,100,300</microControllerData></GetMicrocontrollerData></s:Body></s:Envelope>

Получила:

HTTP/1.1 405 Method Not Allowed
Cache-Control: private
Allow: GET, HEAD, OPTIONS, TRACE
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Tue, 01 Mar 2016 10:44:44 GMT
Content-Length: 5671

А вот тело: https://dl.dropboxusercontent.com/u/2237590/405.html

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


person Grossu Iulian    schedule 01.03.2016    source источник


Ответы (1)


Итак, после очень краткого поиска по вашей проблеме я нашел следующий вопрос: WCF на IIS8; * Сопоставление обработчика .svc не работает

Игнорируя тот факт, что вопрос касается IIS 8, вы используете Windows или Windows Server?

Если вы используете Windows, перейдите в ...

  • Панель управления -> Программы -> Программы и компоненты> Включение или отключение компонентов Windows. В разделе ".Net Framework 3.5 (включает .NET 2.0 и 3.0")
  • убедитесь, что «HTTP-активация Windows Communication Foundation» включена.
  • Также проверьте в разделе «.NET Framerwork 4.x Advanced Services» и в разделе «WCF Services» проверьте, включена ли активация HTTP и там.

Это изображение из этого вопроса, показывающее, какое изменение .net 4.5 необходимо внести. Функции для включения

Если вы используете Windows Server, попробуйте выполнить первый ответ на вопрос о том, как настроить роль с помощью диспетчера серверов.

person simlawstu    schedule 01.03.2016
comment
Мне удалось заставить веб-службу работать на другом компьютере с установленной Windows 10 (IIS 10) и вашими инструкциями, если применимо. Однако под Windows 7 SP1 у меня есть только вариант .Net Framework 3.5, и я получаю ошибку 500.21 после включения HTTP-активации, но я больше не застреваю и должен решить проблему самостоятельно. Я искал не в том месте и никогда бы не понял этого. Большое спасибо! - person Grossu Iulian; 01.03.2016
comment
Я рада что это помогло - person simlawstu; 13.04.2016
comment
Это действительно помогло - отлично работало в Server 2016 Preview 5 - я думаю, что по умолчанию были установлены почти все функции. После чистой установки Server 2016 Standard этот бит сводил меня с ума, и мы все знаем, насколько это сложно при работе по расписанию :-) - person gchq; 30.10.2016
comment
Установка активации HTTP устранила ошибку 405, которую я получал после того, как переместил WCF на новый веб-сервер с не установленной активацией HTTP. Спасибо! - person IanK.CO; 23.02.2018
comment
Спасибо, сэр! Добавление активации HTTP на Server 2016 тоже было для меня решением. - person Christopher D. Emerson; 11.09.2019