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.