Подтвердить что ты не робот

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

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

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

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

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

Спасибо, Corey

4b9b3361

Ответ 1

Я потратил немало времени, пытаясь понять, почему я использовал метод 405 Method Allowed при использовании глагола DELETE. Все, что я читал, сказал, чтобы удалить WebDAV из IIS, но это, казалось, нарушило IIS, поскольку все сайты дали 503 ошибки. Я переустановил его, а затем начал искать в IIS для некоторых настроек.

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

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

Ответ 2

Если кто-то имеет такую ​​же проблему.

Вот еще один способ, которым вы можете попробовать.

в web.config

<system.webServer>
    <modules>
      <remove name="WebDAVModule" />
    </modules>
    <handlers>
      <remove name="WebDAV" /> 
    </handlers>
</system.webServer>

Ответ 3

Откройте сопоставление обработчика веб-сайта в диспетчере IIS

Отредактируйте каждый обработчик, который вы хотите удалить, нажав кнопку "Запросить ограничения", выбрав вкладку "Глаголы", затем добавьте DELETE в список "Один из следующих" или, если необходимо, в своих проблемах, разрешите все глаголы.

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

Ответ 4

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

Кори