Dela via


ASP0007: Routningsparametern och argumentvaligheten är felmatchade

Värde
Regel-ID ASP0007
Kategori Användning
Korrigeringen är antingen brytande eller icke-brytande Oskiljbar

Orsak

En routningsparameter deklareras som obligatorisk i delegatdefinitionen men markeras som valfri i slutpunktsvägen.

Regelbeskrivning

När en slutpunkt deklareras kan parametrarnas valfrihet deklareras i både routningsmallen och i routningshanterarargumenten. När en parameter deklareras som valfri i hanteraren måste den också deklareras som valfri i routningsmallen. GET /todos kan till exempel inte matcha följande kod:

app.MapGet("/todos/{id}", (int? id) => {});

Föregående kod matchar inte GET /todos eftersom parametern id inte har angetts, även om den behandlas som valfri i routningshanteraren.

Så här åtgärdar du överträdelser

För att åtgärda ett brott mot den här regeln, se till att valfriheten i routningsmallen och delegeringen stämmer överens. Till exempel för följande kodexempel:

app.MapGet("/todos/{id}", (int? id) => {});

Om parametern är avsedd att krävas gör du typen icke-nullbar genom att ta bort ? från int?:

app.MapGet("/todos/{id}", (int id) => {});

Om parametern är avsedd att vara valfri bör operatorn ? för null-värdetyp tillämpas:

app.MapGet("/todos/{id?}", (int? id) => {});

När du ska ignorera varningar

Utelämna inte en varning från den här regeln. Felaktig parameter-valfrihet kan resultera i oväntat beteende med routning under körexekvering.