Partage via


ASP0005 : Ne pas placer d'attribut sur la méthode appelée par la lambda du gestionnaire de route

Value
Identificateur de la règle ASP0005
Catégorie Utilisation
Le correctif est cassant ou non cassant Sans rupture

Cause

Un attribut a été appliqué à une définition de méthode au lieu du gestionnaire de la route dans un point d'arrivée de gestionnaire de la route.

Description de la règle

Lorsqu'un point d'accès est déclaré, les attributs doivent être appliqués au paramètre délégué pour être efficaces. 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 de la route, comme indiqué dans le code suivant :

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

Todo GetTodoById(int id)
{
  ...
}

Comment corriger les violations

Pour remédier à une violation de cette règle, assurez-vous que les attributs du point final sont appliqués au paramètre du gestionnaire de la route :

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. Des attributs mal placés peuvent entraîner un comportement inattendu au moment de l'exécution.