Почему глагол HTTP DELETE возвращает ошибку 405 - метод не разрешен для моей службы RESTful WCF, работающей на IIS 7.5? - PullRequest
26 голосов
/ 11 декабря 2010

Может кто-нибудь пролить свет на это?Я чувствую, что сегодня потратил впустую весь день, охотясь и ища в интернете любую информацию о том, как это сделать.Я создал очень простой сервис WCF RESTful.Это в основном доказательство концепции.У меня есть простая база данных, и я просто пытаюсь заставить ее работать, чтобы я мог просматривать, создавать, обновлять и удалять элементы.Прямо сейчас у меня только просмотр и обновление работают.Я займусь созданием позже.Пока я не могу понять, почему удаление не работает.Почти все, что я нашел до сих пор, говорит мне, что мне нужно отключить модуль WebDAV.Я сделал это, а затем я получил PUT на работу.Но я не могу заставить УДАЛИТЬ работать.Всякий раз, когда я пытаюсь вызвать DELETE через мой сервис, я получаю следующую ошибку:

Удаленный сервер возвращает неожиданный ответ: (405) Метод не разрешен.

Так что, похоже, где-то на моем сервереэто не позволяет удалить глагол.Но за жизнь я не могу в этом разобраться.Я уже проверил сопоставления обработчиков, и обработчик разрешает все глаголы для расширения .SVC.Я отключил WebDAV.Я не совсем уверен, где еще искать.Я использую IIS 7.5 в Windows Server 2008 R2.

(могу предоставить код, если он вообще поможет)

Спасибо, Кори

Ответы [ 4 ]

54 голосов
/ 28 декабря 2012

На случай, если у кого-то возникнет такая же проблема.

Вот еще один способ попробовать.

в web.config

<system.webServer>
    <modules>
      <remove name="WebDAVModule" />
    </modules>
    <handlers>
      <remove name="WebDAV" /> 
    </handlers>
</system.webServer>
24 голосов
/ 20 февраля 2012

Я потратил кучу времени, пытаясь понять, почему я продолжал получать метод 405 «Не разрешено» при использовании глагола «УДАЛИТЬ».Все, что я прочитал, говорило об удалении WebDAV из IIS, но, похоже, это сломало IIS, так как все сайты выдавали 503 ошибки.Я переустановил его, а затем начал искать в IIS некоторые параметры.

Оказывается, проблема в WebDAV, и на странице функций IIS есть узел с именем " WebDAV Authoring ",Нажав на это, вы можете затем нажать Настройки WebDAV ... , чтобы открыть страницу свойств.В разделе «Поведение фильтрации запросов» установите Разрешить фильтрацию глаголов на Ложь , похоже, помогло мне (YMMV).

Это, казалось, было популярным результатомпоиск решения, я подумал, что добавлю в список предлагаемых решений.

1 голос
/ 19 октября 2013

Откройте сопоставления обработчиков вашего сайта в IIS Manager

Отредактируйте каждый обработчик, с помощью которого вы хотите УДАЛИТЬ, щелкнув Запретить запрос, выбрав вкладку Глаголы, затем добавьте УДАЛИТЬ в список «Один из следующих» или, если необходимо, разрешите все глаголы.

Возможно, вам придется перезапустить ваш сайт и / или перекомпилировать ваш код

0 голосов
/ 12 декабря 2010

Ну, я не уверен, что это действительно ответ на мой вопрос, но он решил проблему. Я просто запустил новый проект в Visual Studio и на этот раз использовал шаблон службы .NET REST, который нашел в Интернете. Затем я перенес старый код, который у меня был с предыдущей попытки, и использовал его в новом проекте. Оно работало завораживающе. Все четыре глагола теперь работают правильно (GET, PUT, POST и DELETE). Так что это работает сейчас.

Corey

...