Condividi tramite


ASP0005: Non posizionare l'attributo sul metodo chiamato dalla lambda del gestore di rotte

Valore
ID della regola ASP0005
Categoria Uso
La modifica è dirompente o non dirompente 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 della 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 eliminare un avviso da questa regola. Gli attributi posizionati in modo non riuscito possono comportare un comportamento imprevisto in fase di esecuzione.