2013-12-07 6 views
8

Я уже работал с веб-API и имел много проблем, таких как публикация нескольких параметров. Я повышен до WebApi2 использования маршрутизации атрибутов и теперь имеют такие проблемы, как:ASP.NET web API HTTP Delete 405 Метод не разрешен

"message":"The requested resource does not support http method 'DELETE'."

Я провел весь день в поисках переполнения стека и в Интернете, чтобы решить эту проблему:

  • Удалены webdav
  • В http protocol Разрешить все get,put,post,delete
  • Добавлен атрибут [HTTPDelete]
  • Добавлено name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"
  • Поиск Google для необходимой помощи here

Может кто-то пожалуйста, руководство меня по этому поводу?

+0

Ваше имя должно быть более наглядным –

+0

Я изменил его. – user2997115

+0

Проблема с предоставлением нам поискового запроса (в номере 5) заключается в том, что мы хотим полагать, что вы получили доступ ко всем миллионам результатов, возвращаемых этим запросом (по крайней мере, для меня, сегодня)? Если нет, как это поможет нам помочь вам? –

ответ

15

У меня была та же проблема. Добавление ниже код в ваш web.config должен решить эту проблему под system.webserver разделе:

<system.webServer> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <modules runAllManagedModulesForAllRequests="true"> 
     <remove name="WebDAVModule"/> 
+2

-> didi это для меня: Legends

+0

Работал и для меня! Спасибо –

9

я имел такую ​​же проблему, потому что мой контроллер было так:

[HttpDelete] 
public HttpResponseMessage Delete(string Id) 
{ 
    .... 
} 

И на клиенте I используется отправить идентификатор в теле запроса:

var url = '/api/upload'; 
var data = JSON.stringify({ 'Id': id }); // <-- In the body 
$.ajax({ 
    url: url, 
    type: 'DELETE', 
    data: data, // <-- in the body 
    contentType: 'application/json' 
}) 

Когда я изменил клиент, чтобы использовать его в качестве параметра URL вместо этого он работал:

var url = '/api/upload/' + id; // <- In the URL 
$.ajax({ 
    url: url, 
    type: 'DELETE', 
    contentType: 'application/json' 
}); 
+0

Я думаю, что вам нужно все это в вышеуказанном ответе плюс сделать запрос правильно – ncubica

+0

вот этот вопрос – toddmillernyc

1

Код JavaScript для УДАЛИТЬ глагола должен быть такой:

$.ajax({ 
    **url: "/api/SomeController/" + id,** 
    type: "DELETE", 
    dataType: "json", 
    success: function(data, statusText) { 
     alert(data); 
    }, 
    error: function(request, textStatus, error) { 
     alert(error); 
     debugger; 
    } 
}); 

НЕ использовать что-то вроде этого,

... 
data: {id:id} 
... 

как при использовании метода POST.

+0

Павел Харибин, вы спасли мой день. Спасибо за ответ – user2934829

Смежные вопросы