2014-10-06 31 views
5

Tôi có một một hành động trên Email Web API của tôi 2 điều khiển:Web API 2 phương pháp DELETE luôn trả về 500

[Authorize] 
[RoutePrefix("api/Email")] 
public class EmailController : ApiController { 

    //... 

    [HttpDelete] 
    [Route("Remove/{id}")] 
    private void Remove(int id) { 
     _repo.Remove(id); 
    } 
} 

Khi tôi gọi hành động từ Fiddler với DELETEhttp://localhost:35191/api/Email/Remove/35571 (hoặc bằng bất kỳ phương pháp nào khác) tôi nhận được một 500 trở lại với trang lỗi IIS chung mà cung cấp cho tôi không có thông tin về lỗi.

Dường như lỗi xảy ra trước khi hành động của tôi được gọi là vì thiết lập điểm ngắt trong kết quả hành động trong điểm ngắt không bao giờ bị nhấn.

Có một số loại cấu hình cần thiết để cho phép DELETE phương pháp trong IIS (Express) không?

tôi đã cố gắng cho phép một cách rõ ràng DELETE trong web.config của tôi:

<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 

nhưng vô ích.

+0

Bạn có một SyntaxView được cài đặt trong Fiddler (nó nắm giữ một chút chi tiết về lỗi thường)? – Milen

+1

Hiển thị tuyến đường của bạn. Bạn có thuộc tính '[RoutePrefix (...)]' trên 'ApiController' không? Có phải 'api/Email' không? Hơn nữa, cả lớp điều khiển và phương thức hành động của bạn phải là 'công khai' tôi tin. –

+0

Cú pháp chỉ cung cấp cho tôi một phiên bản cú pháp được tô sáng của trang HTML mà IIS cung cấp cho tôi. –

Trả lời

10

Bạn phải làm cho phương pháp tiếp xúc của bạn public:

[HttpDelete] 
[Route("Remove/{id}")] 
public void Remove(int id) { 
    _repo.Remove(id); 
} 

Nếu điều đó không làm việc thì bạn probally cần phải loại bỏ các WebDav (web.config):

<system.webServer> 
    <modules> 
     <remove name="WebDAVModule" /> 
    </modules> 
    <handlers> 
     <remove name="WebDAV" /> 
    </handlers> 
</system.webServer> 
+0

Tôi không thể tin rằng mình đã bỏ lỡ điều đó. Cảm ơn bạn. –

+0

thêm xóa WebDAV đã sửa nó. Tuyến đường không ảnh hưởng gì. – MIKE

+0

bằng cách xóa webdav Tôi hiểu rằng nó đã khắc phục được sự cố nhưng nó đã loại bỏ vấn đề gì khác? – MIKE

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