Tôi có bộ điều khiển API Web cơ bản được xây dựng trong MVC 6 (beta 3) như là một phần của dự án ASP.NET mới. Vấn đề tôi gặp phải là nó không chấp nhận động từ PUT hoặc PATCH và trả về lỗi 404 bất cứ khi nào tôi cố truy cập URL bằng các phương pháp đó.ASP.NET 5 + MVC 6 + Bộ điều khiển API Web với động từ PUT hoặc PATCH trả về lỗi 404
Đây là những gì tôi đã có như một thử nghiệm cơ bản:
namespace Test.Controllers
{
[Route("api/test")]
public class TestController : Controller
{
[HttpGet]
public string TestGet()
{
return "Hello from GET!";
}
[HttpPost]
public string TestPost()
{
return "Hello from POST!";
}
[HttpDelete]
public string TestDelete()
{
return "Hello from DELETE!";
}
[HttpPut]
public string TestPut()
{
return "Hello from PUT!";
}
[HttpPatch]
public string TestPatch()
{
return "Hello from PATCH!";
}
}
}
Thăm http://localhost/api/test
với 'Postman' để kiểm tra URL với mỗi người trong số các động từ (GET, POST, DELETE, PUT, và PATCH) trong lần lượt hoạt động tốt cho GET, POST và DELETE, nhưng cung cấp cho 404 với PUT và PATCH.
Edit: Tôi nhớ có là một cách để tạo điều kiện cho những động từ cho MVC5 và thấp hơn liên quan đến việc vô hiệu hóa WebDAV và thêm xử lý cho hai động từ qua web.config
, nhưng khi không có những điều như web.config
trong ASP.NET 5 Tôi thua lỗ hoàn toàn về cách sửa lỗi này. Tôi cho rằng nó có thể được giải quyết qua config.json
nhưng tất cả nỗ lực của tôi để tìm kiếm điều này đã không trả lại gì hữu ích cả!
Trang web trước tôi đã phát triển trong MVC5 không có vấn đề này và xem tệp web.config
có vẻ như không có bất kỳ điều gì trong đó vô hiệu hóa WebDAV (thực sự đã gỡ cài đặt) hoặc cho phép xử lý PUT/Phương pháp PATCH cho URL không mở rộng. Vì vậy, tôi không nghĩ rằng những gì tôi đã viết trước đó được áp dụng.
Bất kỳ ý tưởng nào?
Cảm ơn
Web.config vẫn tồn tại và được yêu cầu cho IIS –
Mặc dù không thay đổi bất kỳ điều gì trong mã của tôi, nhưng nó dường như hoạt động tốt vào sáng nay. Tôi sẽ đặt điều này xuống để trở thành một lỗi ở đâu đó vì không có lý do tại sao nó không nên làm việc trước đây và đột nhiên bắt đầu làm việc ngay bây giờ. –
Điều kỳ lạ là mã trên chỉ hoạt động tốt cho mọi động từ cho tôi. – dotnetstep