Я написал службу REST, используя веб-API ASP.NET. Я пытаюсь отправить запрос HttpDelete, но получаю следующую ошибку:
405 - HTTP-глагол, используемый для доступа к этой странице, не разрешен
Думаю, я близок к решению, я обнаружил, что мне нужно включить удаленное управление IIS, перейти в раздел Handler Mappings и добавить глагол DELETE в соответствующую позицию ... но проблема в том, что есть много разных позиций на список ... (например, здесь: http://www.somacon.com/p126.php ).
Какой мне отредактировать? У некоторых из них нет расширения, например "ExtensionUrlHandler-Integrated-4.0", и я добавил к нему глагол DELETE, но он по-прежнему не работает ...
Это был просто снимок в темноте, чтобы изменить его, так что я должен изменить другое положение? Если да, то какой? Или, может быть, мне еще что-нибудь нужно сделать?
Та же веб-служба отлично работает с моей локальной службой, поэтому я предполагаю, что проблема в удаленном IIS ...
Приветствую
Ответы:
Распространенной причиной этой ошибки является WebDAV . Убедитесь, что вы удалили его.
источник
Удалять WebDAV не нужно, просто добавьте эти строки в web.config:
источник
Измените файл Web.Config, как показано ниже
источник
Измените файл Web.Config, как показано ниже. Это будет действовать как шарм.
В узле
<system.webServer>
добавьте ниже часть кодаПосле добавления ваш Web.Config будет выглядеть, как показано ниже
источник
У меня была эта проблема, и я решил следующее:
Выберите серверный сайт
в представлении функций: открыть сопоставление обработчика
источник
Если ни одно из вышеперечисленных решений не решило вашу проблему, как в моем случае (все еще застрял с моим модулем RestClient, стоящим перед 405), попробуйте запросить ваш Api с помощью такого инструмента, как Postman или Fiddler. Я имею в виду, что проблема может быть в другом месте, например, в неверно отформатированном запросе.
Я обнаружил, что мой модуль RestClient запрашивал 'Put' с параметром Id, который плохо отформатирован:
вместо того
Примечательно, что неверно отформатированный запрос возвращает 405 - метод запрещен (IIS 7.5)
источник
Нечасто, но некоторым может помочь.
Мы получали ошибку 405 «Метод запрещен» для декорированного метода HttpPut.
Наша проблема может показаться необычной, поскольку мы случайно использовали атрибут [HttpPut] из System.Web.Mvc, а не из System.Web.Http
Причина в том, что resharper предложил версию .Mvc, где, как обычно, System.Web.Http уже упоминается, когда вы наследуете непосредственно от ApiController, мы использовали класс, расширяющий ApiController.
источник
У меня такое случалось (метод 405 не разрешен), когда метод публикации веб-API, который я вызывал, имел примитивные типы для параметров, а не сложный тип, доступ к которому осуществлялся из тела. Вот так:
Это сработало:
Этого не произошло:
источник
Эта ошибка возникает из-за обработчика статических файлов, который по умолчанию не фильтрует никакие команды, но, вероятно, может иметь дело только с HEAD и GET.
И это потому, что никакой другой обработчик не подошел к пластине и не сказал, что они могут обрабатывать DELETE.
Поскольку вы используете WEBAPI, который из-за маршрутизации не имеет файлов и, следовательно, расширений, в ваш файл web.config необходимо добавить следующие дополнения:
Очевидно, что требуется, зависит от классического режима и интегрированного режима, а классический режим зависит от разрядности. Кроме того, заголовок OPTIONS был добавлен для обработки CORS, но если вы не используете CORS, вам это не нужно.
К вашему сведению, ваш web.config является локальной версией приложения (или каталога приложения), верхним уровнем которой является applicationHost.config.
источник
Если это IIS 8.0, проверьте, включена ли активация HTTP. Диспетчер серверов -> IIS -> Управление (см. Вверху справа) -> Добавить роли и функции -> ... -> перейти к конфигурации WCF и затем выбрать HTTP-активация.
источник
В нашем случае проблема заключалась в федеративном входе в систему между сайтом .Net и ADFS. При перенаправлении к ADFS конечной точки
wctx
параметра необходимо все три параметра дляWSFederationAuthenticationModule.CreateSignInRequest
метода:rm
,id
иru
Спасибо Гийому Раймонду за совет по проверке параметров URL!
источник
Помимо всех вышеперечисленных решений, проверьте, соответствует ли "
id
" или какой-либо настраиваемый параметр вDELETE
методе конфигурации маршрута.Если вы столкнулись с повторяющимися ошибками 405, лучше сбросьте подпись метода по умолчанию, как указано выше, и попробуйте.
Конфигурация маршрута по умолчанию будет искать
id
в URL. Таким образом, имя параметраid
важно здесь, если вы не измените конфигурацию маршрута вApp_Start
папке.Вы можете изменить тип данных
id
файла.Например, приведенный ниже метод должен работать нормально:
Примечание. Также убедитесь, что вы передаете данные по URL-адресу, а не по методу данных, который будет нести полезную нагрузку как содержимое тела.
Пример:
Надеюсь, поможет.
источник
Я добавлю для тех, кто застрял при попытке запустить
PHP
(Laravel
в некоторых случаях) или другую уникальнуюIIS
ситуацию с хостингом405 error
, когда вам нужно изменитьverbs
обработчик в обработчике для этой конкретной ситуации ... поэтому, поскольку я использовал,PHP
я пошел вPHP
обработчик и вRequest Restrictions
, затемVerbs
вкладку, добавьтеverbs
вам нужно. Это все, что мне нужно было добавить,web.config
чтобы включитьCORS
вLaravel
.источник
Ничего из вышеперечисленного у меня не сработало, и у меня возникли проблемы с использованием страницы поддержки ( https://support.microsoft.com/en-us/help/942051/error-message-when-a-user-visits-a-website -that-is-hosted-on-a-server), затем я сравнил файл хоста приложения с одной из рабочих копий и, похоже, мне не хватало нескольких обработчиков, и когда я добавил их обратно в хост приложения, он начал работать. Мне все это не хватало,
источник