ASP0005: non posizionare l'attributo sul metodo chiamato dal gestore di route lambda
Valore | |
---|---|
ID regola | ASP0005 |
Categoria | Utilizzo |
Correzione che causa un'interruzione o un'interruzione | Nessuna interruzione |
Causa
Un attributo è stato applicato a una definizione di metodo anziché al gestore di route in un endpoint del gestore di route.
Descrizione regola
Quando un endpoint viene dichiarato, gli attributi devono essere applicati al parametro delegato per essere efficaci. Ad esempio, l'attributo Authorize nell'esempio di codice seguente non è impostato sull'endpoint registrato:
app.MapGet("/todos/{id}", GetTodoById);
[Authorize]
Todo GetTodoById(int id)
{
...
}
L'attributo deve essere inserito nel parametro del gestore di route, come illustrato nel codice seguente:
app.MapGet("/todos/{id}", [Authorize] GetTodoById);
Todo GetTodoById(int id)
{
...
}
Come correggere le violazioni
Per correggere una violazione di questa regola, assicurarsi che gli attributi dell'endpoint vengano applicati al parametro del gestore di route:
app.MapGet("/todos/{id}", [Authorize] (int id) => {});
app.MapGet("/users/{id}", [Authorize] GetUserById);
Quando eliminare gli avvisi
Non escludere un avviso da questa regola. Gli attributi posizionati in modo non riuscito possono comportare un comportamento imprevisto in fase di esecuzione.