Поделиться через


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);

Когда лучше отключить предупреждения

Для этого правила отключать вывод предупреждений не следует. Неуместные атрибуты могут привести к непредвиденному поведению во время выполнения.