Share via


ASP0005: No colocar el atributo en el método llamado por lambda del controlador de ruta

Valor
Identificador de la regla ASP0005
Categoría Uso
La corrección es problemática o no problemática Poco problemático

Causa

Se aplicó un atributo a una definición de método en lugar del controlador de ruta en un punto de conexión del controlador de ruta.

Descripción de la regla

Cuando se declara un punto de conexión, los atributos se deben aplicar al parámetro delegado para que sea efectivo. Por ejemplo, el atributo Authorize del ejemplo de código siguiente no está establecido en el punto de conexión registrado:

app.MapGet("/todos/{id}", GetTodoById);

[Authorize]
Todo GetTodoById(int id)
{
  ...
}

El atributo debe colocarse en el parámetro del controlador de ruta, como se muestra en el código siguiente:

app.MapGet("/todos/{id}", [Authorize] GetTodoById);

Todo GetTodoById(int id)
{
  ...
}

Cómo corregir infracciones

Para corregir una infracción de esta regla, asegúrese de que los atributos de punto de conexión se aplican al parámetro del controlador de ruta:

app.MapGet("/todos/{id}", [Authorize] (int id) => {});
app.MapGet("/users/{id}", [Authorize] GetUserById);

Cuándo suprimir las advertencias

No suprima las advertencias de esta regla. Los atributos mal colocados pueden dar lugar a un comportamiento inesperado en runtime.