Nguon: Microsoft Learn · .NET 8.0

ASP0004: Không sử dụng action results với route handlers

Nguồn: ASP0004: Do not use action results with route handlers

-Giá trị
Rule ID (Mã quy tắc)ASP0004
Category (Danh mục)Usage (Sử dụng)
Fix is breaking or non-breaking (Sửa lỗi có phá vỡ tương thích không)Non-breaking (Không phá vỡ)

Nguyên nhân

Một delegate (hàm ủy quyền) của route handler (trình xử lý định tuyến) trả về một giá trị triển khai IActionResult.

Mô tả quy tắc

Các route handler endpoint (điểm cuối của trình xử lý định tuyến) không hỗ trợ thực thi các instance của IActionResult trong MVC. Việc trả về một IActionResult không triển khai IResult sẽ dẫn đến việc serialize (tuần tự hóa) instance kết quả thay vì thực thi kết quả đó.

csharp
app.MapGet("/todos/{id}", (int id) => new JsonResult(new Todo { .. }));

Cách khắc phục vi phạm

Để khắc phục vi phạm quy tắc này, hãy đảm bảo route handler của endpoint trả về kiểu IResult bằng cách sử dụng các extension method (phương thức mở rộng) của Results:

csharp
app.MapGet("/todos/{id}", (int id) => Results.Json(new Todo { .. }));

Khi nào có thể bỏ qua cảnh báo

Không nên bỏ qua cảnh báo từ quy tắc này. Việc trả về IActionResult không triển khai IResult sẽ dẫn đến serialize instance kết quả thay vì thực thi kết quả đó.