DELETE и PUT запросы к методам ASP.NET MVC контроллера
На сайте ASP.NET MVC есть контроллер с методами: [code lang=text] [HttpGet] public void Get(int? id) { // получение объекта } [HttpPost] public void Create(Model model) { // создание объекта } [HttpDelete] public void Delete(int? id) { // удаление объекта } [HttpPut] public void Update(int? id, Model model) { // изменение объекта } [/code] При обращении к методам AJAX- запросам GET и POST работают корректно, но методы DELETE и PUT не выполняются
- возвращается ошибка 401 Unauthorized. Возможны несколько вариантов решения этой проблемы.
Удалить модуль WebDAV на сервере, где хостится сайт
Удаление выполняется через диспетчер сервера: Win 2012: Управление -> Удалить роли и компоненты. Выбираете текущий сервер. В списке ролей сервера необходимо убрать галочку с пункта “Публикация WebDAV” 0px
Указать в web.config сайта не использовать модуль WebDAV
В web.config добавить: [code lang=text] <configuration> … <system.webServer> <modules> <remove name="WebDAVModule” /> </modules> <handlers> <remove name="WebDAV” /> </handlers> … </system.webServer> </configuration> [/code]
Добавить в web.config настройку runAllManagedModulesForAllRequests
В web.config добавить: [code lang=text] <configuration> … <system.webServer> <modules runAllManagedModulesForAllRequests="true” /> … </system.webServer> </configuration> [/code]
Изменить проверку подлинности сайта
При создании сайта на IIS по-умолчанию включена анонимная проверка подлинности. В некоторых случаях возможно решение проблемы с DELETE и PUT запросами изменением проверки подлинности на другую. Например, Windows или проверку подлинности с помощью форм.