Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
| Valore | |
|---|---|
| ID della regola | ASP0007 |
| Categoria | Uso |
| La modifica è dirompente o non dirompente | Non separabile |
Causa
Un parametro di route è dichiarato come obbligatorio nella definizione del delegato, ma è indicato come facoltativo nella route dell'endpoint.
Descrizione della regola
Quando un endpoint viene dichiarato, la facoltatività dei parametri può essere dichiarata sia nel modello di route che negli argomenti del gestore di route. Quando un parametro viene dichiarato come facoltativo nel gestore, deve anche essere dichiarato come facoltativo nel modello di route. Ad esempio, GET /todos non riesce a risolvere una corrispondenza per il codice seguente:
app.MapGet("/todos/{id}", (int? id) => {});
Il codice precedente non corrisponde a GET /todos perché il id parametro non è stato specificato, anche se viene considerato facoltativo nel gestore di route.
Come correggere le violazioni
Per correggere una violazione di questa regola, assicurarsi che la facoltatività nel modello di route e il delegato corrispondano. Ad esempio, per l'esempio di codice seguente:
app.MapGet("/todos/{id}", (int? id) => {});
Se il parametro deve essere richiesto, rendi il tipo non annullabile rimuovendo ? da int?:
app.MapGet("/todos/{id}", (int id) => {});
Se il parametro deve essere facoltativo, è necessario applicare l'operatore tipo di valore nullable?:
app.MapGet("/todos/{id?}", (int? id) => {});
Quando eliminare gli avvisi
Non sopprimere un avviso da questa regola. Il disallineamento di optionalità dei parametri può causare un comportamento imprevisto con il routing in fase di esecuzione.