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.