5

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

+1

Web.config vẫn tồn tại và được yêu cầu cho IIS –

+1

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ờ. –

+1

Điều kỳ lạ là mã trên chỉ hoạt động tốt cho mọi động từ cho tôi. – dotnetstep

Trả lời

2

hỗ trợ web.config chỉ bị xóa khỏi phần .NET và ASP.net của ứng dụng. Nếu ứng dụng của bạn được lưu trữ trong IIS, bạn vẫn cần một web.config giống như bạn đã làm cho API web.

+1

Cảm ơn. Tôi sẽ đặt '' 'web.config''' vào dự án của tôi ở đâu? Nếu tôi đặt nó vào thư mục gốc của dự án, thì nó sẽ không được sao chép khi xuất bản nó, nhưng nếu tôi đặt nó trong '' 'wwwroot''' thì nó sẽ không ghi đè lên' '' web.config '' 'được tạo ra bằng cách xuất bản hoặc bị ghi đè bởi nó? Hoặc tôi có phải thêm thủ công tệp sau khi xuất bản không? Nếu vậy, có cách nào đơn giản để nhận VS2015 (sử dụng CTP6 tại thời điểm này) để tự động thêm các cài đặt này vì vậy tôi không phải thực hiện thủ công mỗi khi tôi xuất bản trang web của mình? –

+0

Tôi đã chỉnh sửa câu hỏi của mình vì tôi không còn tin rằng vấn đề liên quan đến cài đặt '' 'web.config''' như dự án trước được phát triển trong MVC 5 không yêu cầu bất kỳ cài đặt đặc biệt nào và hoạt động tốt với PUT/Động từ PATCH. –

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