Partager via


ASP0005 : ne placez pas l’attribut sur la méthode appelée par le gestionnaire de routage lambda

Valeur
Identificateur de la règle ASP0005
Catégorie Usage
Le correctif est cassant ou non cassant Non-breaking

La cause

Un attribut a été appliqué à une définition de méthode au lieu du gestionnaire de routage dans un point de terminaison de gestionnaire de routage.

Description de la règle

Lorsqu’un point de terminaison est déclaré, les attributs doivent être appliqués au paramètre délégué pour être effectifs. Par exemple, l’attribut Authorize dans l’exemple de code suivant n’est pas défini sur le point de terminaison inscrit :

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

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

L’attribut doit être placé sur le paramètre du gestionnaire d’itinéraires, comme indiqué dans le code suivant :

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

Todo GetTodoById(int id)
{
  ...
}

Comment corriger les violations

Pour corriger une violation de cette règle, vérifiez que les attributs de point de terminaison sont appliqués au paramètre du gestionnaire de routage :

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

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle. Les attributs mal placés peuvent entraîner un comportement inattendu lors de l’exécution.