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.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de l’année 2024, nous abandonnerons progressivement le mécanisme de retour d’information GitHub Issues pour le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultez :Soumettre et afficher des commentaires pour