Как заставить работать методы/глаголы .net С# webAPI PUT и DELETE

-Настройки

IIS 7.5 и Visual Studio 2012 4.5

Я создал первый проект webAPI на своей машине. С помощью приведенного ниже кода я могу изменить тип глагола на POST или GET, и запрос к серверу и ответ клиенту работают отлично.

Поскольку код ниже, я продолжаю получать либо код ошибки 405, либо код ошибки 404, не найденный.

Мой вопрос в том, есть ли у них какие-то настройки, которые мне нужно добавить в файл .config, или настройки, которые мне нужно сделать на веб-сервере iis7.5, чтобы я мог заставить это работать?

Я гуглю это снова и снова и не могу найти ответ на этот вопрос.

В моем файле JavaScript на клиенте.

  $.ajax(
                     {
                         url: "/api/project",
                         type: "PUT",
                         contentType: "application/json",
                         data:'3',
                         success: function (result) {
                            alert(result);
                         }
                     });

В контроллере в классе С#

   public void Put(int intt)
    {
        var obj = intt;
    }

person Vinyl Windows    schedule 20.07.2012    source источник


Ответы (3)


Нашла волшебную, неуловимую связь.

http://geekswithblogs.net/michelotti/archive/2011/05/28/resolve-404-in-iis-express-for-put-and-delete-verbs.aspx

Я беру это обратно, я получаю еще одну ошибку сервера 500.

См. ошибку ниже. Этот сводит меня с ума...

Ошибка IIS 500

person Vinyl Windows    schedule 20.07.2012
comment
Это решило мою проблему. Это так нелепо, что Web API предоставляет методы GET, POST, PUT и DELETE по умолчанию, но IIS ограничивает их. - person Gaui; 28.11.2012

Похоже, вам может понадобиться отключить службу WebDAV. Глянь сюда:

Включение метода html PUT в IIS 7.5

person Eric Petroelje    schedule 20.07.2012
comment
Я работаю на машине с Windows 7. Таким образом, служба роли недоступна. - person Vinyl Windows; 20.07.2012

У меня тоже была ошибка 500, и после прочтения этот пост я обнаружил, что если изменить Content-Type на «application/json», код ошибки 500 исчезнет.

Однако я хотел, чтобы "текст/обычный" работал, поэтому я следовал руководству здесь, и я успешно заработал.

Надеюсь, это поможет.

person Ryan Penfold    schedule 30.08.2012