2013-12-07 18 views
8

Tôi đã làm việc với API web và gặp nhiều vấn đề như đăng nhiều thông số. Tôi nâng cấp lên WebApi2 sử dụng các thuộc tính định tuyến và bây giờ có vấn đề như:ASP.NET web API HTTP Xóa 405 Phương pháp không được phép

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

tôi đã dành cả ngày tìm kiếm Stack Overflow và các trang web để giải quyết vấn đề:

  • Removed webdav
  • Trong http protocol cho phép tất cả get,put,post,delete
  • Đã thêm [HTTPDelete] thuộc tính
  • Thêm name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"
  • được tìm kiếm Google cho sự giúp đỡ cần thiết here

Có thể ai đó xin vui lòng hướng dẫn cho tôi về vấn đề này?

+0

Tiêu đề của bạn cần mô tả chi tiết hơn –

+0

Tôi đã thay đổi nó. – user2997115

+0

Vấn đề với việc đưa ra cho chúng tôi truy vấn tìm kiếm (trong số 5), chúng tôi có tin rằng bạn đã truy cập tất cả 1 triệu kết quả mà truy vấn đó trả về (ít nhất là đối với tôi, hôm nay)? Nếu không, nó giúp chúng tôi giúp gì cho bạn? –

Trả lời

15

Tôi gặp vấn đề tương tự. Thêm mã dưới đây để web.config của bạn nên giải quyết vấn đề dưới sự system.webserver phần:

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

-> đã cho tôi: Legends

+0

Làm việc cho tôi! Cảm ơn –

9

tôi đã cùng một vấn đề, bởi vì điều khiển của tôi là như thế này:

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

Và trên máy khách tôi sử dụng gửi ID theo yêu cầu của cơ thể:

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' 
}) 

Khi tôi thay đổi khách hàng để sử dụng nó như tham số URL thay vì nó làm việc:

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

Tôi nghĩ rằng bạn cần tất cả những gì trong câu trả lời ở trên cộng với yêu cầu chính xác – ncubica

+0

đây là câu trả lời – toddmillernyc

1

Các mã JavaScript cho động từ DELETE phải như thế này:

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

ĐỪNG sử dụng một cái gì đó như thế này,

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

như khi bạn đang sử dụng phương thức POST.

+0

Pavel Kharibin, bạn đã lưu ngày của tôi. Cảm ơn bạn đã trả lời – user2934829

Các vấn đề liên quan