2012-09-05 33 views
9

Tôi đang cố gắng sử dụng PUT trong ứng dụng MVC 4 và tôi gặp lỗi 405.MVC 4. IIS 7.5 PUT trở về 405

Trong định tuyến của tôi, tôi có một hạn chế trên các tuyến đường cho phép PUT và POST, POST để các thiết bị đầu cuối hoạt động, PUT không thành công với một 405.

Tôi đã làm theo lời khuyên ở đây ASP.NET Web API returns 404 for PUT only on some servers và đây ASP.NET MVC got 405 error on HTTP DELETE request?

Tôi cũng đã xóa WeDAV khỏi IIS, nhưng tôi vẫn nhận được 405. Bất kỳ ai có đề xuất nào khác không?

Tôi cũng đang có chính xác cùng một vấn đề trên IIS 8 (với Visual Studio 2012), cho rằng tôi đã làm theo lời khuyên này ASP.NET Web API - PUT & DELETE Verbs Not Allowed - IIS 8 và vẫn không có may mắn

Trả lời

1

Như tôi đã nói ở trên Tôi đang sử dụng WebAPI và có vẻ như WebAPI là 'kén chọn' trên đó động từ ánh xạ tới phương thức nào. Tôi đã kết thúc việc phải thêm các thuộc tính [HttpXXX] (HttpPut, Get, Delete và Post) vào các phương thức thích hợp để định tuyến hoạt động như tôi mong đợi.

25

Nhà cung cấp dịch vụ lưu trữ của tôi KHÔNG thể gỡ cài đặt WebDAV vì điều này sẽ ảnh hưởng đến tất cả mọi người.

Điều này, runAllManagedModulesForAllRequests = "true", đã hoạt động nhưng không được khuyến nghị.

Nhiều bản sửa lỗi bao gồm xóa mô-đun cho WebDAVModule nhưng vẫn không hoạt động. Tôi cũng gỡ bỏ trình xử lý và cuối cùng tôi có thể sử dụng tất cả các động từ POST GET PUT DELETE.

Xóa WebDAVModule và WebDAV trong các mô-đun và trình xử lý.

<modules> 
    <remove name="WebDAVModule" /> 
</modules> 
<handlers> 
    <remove name="WebDAV" /> 
</handlers> 
+1

web của tôi. config đã có runAllManagedModulesForAllRequests = "true". Thêm vào việc loại bỏ các dòng WebDAV trên làm việc tuyệt vời cho tôi. – Jbecwar

+0

Tôi nghĩ rằng tôi đã làm điều này, nhưng tôi chỉ gỡ bỏ xử lý - không phải là mô-đun. Cảm ơn! –

+0

Điều này phù hợp với tôi. +1 –

0

Đưa 2 xu vào của tôi ... Nhấp vào trang web của tôi dưới đây cho thấy 'WebDAV Authoring Rules' là mục nhập cuối cùng dưới 'IIS'. Bấm đúp vào đó cho thấy 'Các tính năng WebDAV đã bị vô hiệu hóa.' cảnh báo ở bên phải và có một liên kết cho 'Bật WebDAV' nhưng nó vẫn không hoạt động. Tôi đi theo đề nghị Stanomatic của trên, phần xử lý không thành vấn đề, và mô-đun của tôi trông như thế này:

<modules runAllManagedModulesForAllRequests="true" /> 

Tôi chỉ cần thêm phương thức remove trong đó và rằng cố định vấn đề của tôi:

<modules runAllManagedModulesForAllRequests="true"> 
    <remove name="WebDAVModule" /> 
</modules> 
Các vấn đề liên quan