ASP0005. Не помещайте атрибут в метод, вызываемый лямбда-обработчиком маршрутов
Значение | |
---|---|
Идентификатор правила | ASP0005 |
Категория | Использование |
Исправление является критическим или не критическим | Не критическое |
Причина
Атрибут был применен к определению метода вместо обработчика маршрутов в конечной точке обработчика маршрутов.
Описание правила
Когда конечная точка объявлена, атрибуты должны применяться к параметру делегата, чтобы быть эффективным. Например, атрибут Authorize в следующем примере кода не задан в зарегистрированной конечной точке:
app.MapGet("/todos/{id}", GetTodoById);
[Authorize]
Todo GetTodoById(int id)
{
...
}
Атрибут должен быть помещен в параметр обработчика маршрутов, как показано в следующем коде:
app.MapGet("/todos/{id}", [Authorize] GetTodoById);
Todo GetTodoById(int id)
{
...
}
Устранение нарушений
Чтобы устранить нарушение этого правила, убедитесь, что атрибуты конечной точки применяются к параметру обработчика маршрутов:
app.MapGet("/todos/{id}", [Authorize] (int id) => {});
app.MapGet("/users/{id}", [Authorize] GetUserById);
Когда лучше отключить предупреждения
Для этого правила отключать вывод предупреждений не следует. Неуместные атрибуты могут привести к непредвиденному поведению во время выполнения.
ASP.NET Core