Я ценю любую помощь в этом вопросе, так как сайт должен заработать сегодня вечером!
У меня есть веб-контроллер api с методом удаления. Метод отлично работает на моем локальном компьютере под управлением IIS Express (Windows 8), но как только я развернул его на активном сервере IIS (Windows Server 2008 R2), он перестал работать и выдает следующее сообщение об ошибке:
Ошибка HTTP 405.0 - метод не разрешен. Страница, которую вы ищете, не может быть отображена из-за использования недопустимого метода (HTTP-команда)
Я поискал в Интернете решения и реализовал самые разумные из них. Моя веб-конфигурация имеет следующие настройки:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
Я также пытался изменить сопоставления обработчиков и фильтрацию запросов в IIS, но безрезультатно. Обратите внимание, что правила создания WebDAV в IIS, похоже, отключены.
Мы будем очень благодарны за любые идеи.
В некоторых случаях удаление его только из модулей может привести к следующей ошибке:
решение было предложено здесь . Также нужно удалить его из обработчиков.
источник
В моем случае ни одно из вышеперечисленных решений не помогло. Это произошло потому, что я изменил имя параметра в моем
Delete
методе.я имел
вместо того
Мне нужно использовать это
id
имя, потому что оно объявлено в моемWebApiConfig
файле. Обратите внимание наid
имя в третьей и четвертой строках:Я получил это решение отсюда .
источник
DELETE
Глагол Javascript для HTTP должен быть таким:Вы не использовать что - то вроде этого:
как при использовании
POST
метода.источник
После того, как я попробовал почти все решения здесь, это сработало для меня. Добавьте это в свой файл конфигурации API
источник
Если вы используете IIS 7.0 или более позднюю версию. Эта проблема в основном связана с модулем расширения WebDAV на сервере IIS. это произошло при использовании действия Опубликовать ИЛИ удалить.
Пожалуйста, попробуйте ниже настройку в веб-конфигурации
источник
У меня тоже была такая же проблема, я звоню в WebAPi и получаю эту ошибку. Добавление следующей конфигурации в web.config для служб решило мою проблему
в файле web.config решил мою проблему. Так я звонил со стороны клиента
источник
Перейдите в файл applicationHost.config (обычно в C: \ Windows \ System32 \ inetsrv \ config) и закомментируйте следующую строку в applicationHost.config
1) Под <handlers>:
2) Также закомментируйте следующий модуль, на который ссылается вышеуказанный обработчик в <modules>
источник
В моем случае я пропустил добавление
{id}
в,[Route("")]
и получил ту же ошибку. Добавление, которое устранило проблему для меня:[Route("{id}")]
источник
У меня был метод ошибки 405, запрещенный, потому что я не сделал общедоступным метод Delete на контроллере WebApi.
Мне потребовалось много времени, чтобы найти это (слишком долго!), Потому что я ожидал в этом случае ошибки Not Found, поэтому я ошибочно предполагал, что мой метод Delete был отклонен.
Причина Not Allowed, а не Not Found в том, что у меня также был метод Get для того же маршрута (что будет нормальным случаем при реализации REST). Общедоступная функция Get соответствует маршрутизации, а затем отклоняется из-за неправильного метода http.
Я знаю простую ошибку, но она может сэкономить время кому-то еще.
источник
Просто добавить. Если это ваша конфигурация
пожалуйста, продолжайте делать, как сказал Хьюго, и не устанавливайте атрибут Route для метода get контроллера, это создало проблему в моем случае.
источник
У меня была аналогичная проблема, но для PUT - ни одно из других предложений не помогло мне.
Однако я использовал
int
вместоstring
идентификатора по умолчанию . добавление{id:int}
к маршруту решило мою проблему.источник
Нам пришлось добавить пользовательские заголовки в наш web.config, поскольку в нашем запросе было несколько заголовков, которые сбивали с толку ответ API.
источник
Атрибут [HttpPost] в верхней части метода Delete решил эту проблему для меня:
источник
data
(т.е. тело запроса) вместоparams
(то есть URL-адрес запроса) на стороне клиента.