ASP0005: não colocar atributo no método chamado pelo manipulador de rotas lambda
Valor | |
---|---|
ID da regra | ASP0005 |
Categoria | Uso |
Correção interruptiva ou sem interrupção | Sem interrupção |
Causa
Um atributo foi aplicado a uma definição de método em vez do manipulador de rotas em um ponto de extremidade do manipulador de rotas.
Descrição da regra
Quando um ponto de extremidade é declarado, os atributos devem ser aplicados ao parâmetro delegado para serem eficazes. Por exemplo, o atributo Authorize no seguinte exemplo de código não está definido no ponto de extremidade registrado:
app.MapGet("/todos/{id}", GetTodoById);
[Authorize]
Todo GetTodoById(int id)
{
...
}
O atributo deve ser colocado no parâmetro do manipulador de rotas, conforme mostrado no seguinte código:
app.MapGet("/todos/{id}", [Authorize] GetTodoById);
Todo GetTodoById(int id)
{
...
}
Como corrigir violações
Para corrigir uma violação dessa regra, verifique se os atributos de ponto de extremidade são aplicados ao parâmetro do manipulador de rotas:
app.MapGet("/todos/{id}", [Authorize] (int id) => {});
app.MapGet("/users/{id}", [Authorize] GetUserById);
Quando suprimir avisos
Não suprima um aviso nessa regra. Atributos incorretos podem resultar em um comportamento inesperado em runtime.