Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
| Value | |
|---|---|
| ID da regra | ASP0007 |
| Categoria | Usage |
| Correção é disruptiva ou não disruptiva | Non-breaking |
Motivo
Um parâmetro de rota é declarado conforme necessário na definição delegada, mas é marcado como opcional na rota do ponto de extremidade.
Descrição da regra
Quando um ponto de extremidade é declarado, a opcionalidade dos parâmetros pode ser declarada no modelo de rota e nos argumentos do manipulador de rota. Quando um parâmetro é declarado como opcional no manipulador, ele também deve ser declarado como opcional no modelo de rota. Por exemplo, GET /todos falha ao resolver uma correspondência para o seguinte código:
app.MapGet("/todos/{id}", (int? id) => {});
O código anterior não corresponde a GET /todos porque o id parâmetro não foi fornecido, embora seja tratado como opcional no manipulador de rotas.
Como corrigir violações
Para corrigir uma violação dessa regra, verifique se a opcionalidade no modelo de rota e no delegado corresponde. Por exemplo, para o seguinte exemplo de código:
app.MapGet("/todos/{id}", (int? id) => {});
Se o parâmetro for necessário, torne o tipo não anulável removendo o ? de int?:
app.MapGet("/todos/{id}", (int id) => {});
Se o parâmetro for destinado a ser opcional, o operador de ? deverá ser aplicado:
app.MapGet("/todos/{id?}", (int? id) => {});
Quando suprimir avisos
Não suprimir um aviso desta regra. A incompatibilidade na opcionalidade dos parâmetros pode resultar em um comportamento inesperado com o roteamento em tempo de execução.