Nguon: Microsoft Learn · .NET 8.0
ASP0003: Không sử dụng action results với route handlers
| - | Giá trị |
|---|---|
| Rule ID (Mã quy tắc) | ASP0003 |
| 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) có tham số được đánh dấu bằng attribute (thuộc tính) [Bind].
Mô tả quy tắc
Các route handler endpoint (điểm cuối của trình xử lý định tuyến) chỉ hỗ trợ một tập con các attribute của MVC như [FromRoute], [FromBody], v.v. Các attribute không được hỗ trợ sẽ bị bỏ qua và dẫn đến hành vi binding (ràng buộc tham số) không mong muốn. Ví dụ, đoạn code sau sẽ tạo ra cảnh báo từ analyzer:
csharp
app.MapGet("/todos/{id}", ([Bind] int id) => new Todo { Id = id });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 endpoint sử dụng một trong các attribute model binding (ràng buộc mô hình) được cho phép:
csharp
app.MapGet("/todos/{id}", ([FromRoute] int id) => new Todo { Id = id });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. Cấu hình model binding không đúng có thể dẫn đến hành vi không mong muốn khi giải quyết tham số lúc runtime (thời gian chạy).