Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
| Waarde | |
|---|---|
| Regel-id | ASP0007 |
| Categorie | Gebruik |
| De oplossing veroorzaakt brekende of niet-brekende problemen | Niet-afbreekbaar |
Oorzaak
Een routeparameter wordt gedeclareerd als vereist in de definitie Delegeren, maar is gemarkeerd als optioneel in de eindpuntroute.
Beschrijving van regel
Wanneer een eindpunt wordt gedeclareerd, kan de optionaliteit van parameters zowel in de routesjabloon als in de argumenten van de route-handler worden vastgelegd. Wanneer een parameter wordt gedeclareerd als optioneel in de handler, moet deze ook worden gedeclareerd als optioneel in de routesjabloon. GET /todos kan bijvoorbeeld geen overeenkomst vinden voor de volgende code:
app.MapGet("/todos/{id}", (int? id) => {});
De voorgaande code komt niet overeen met GET /todos omdat de id parameter niet is opgegeven, ook al wordt deze als optioneel behandeld in de route-handler.
Hoe schendingen op te lossen
Als u een schending van deze regel wilt oplossen, moet u ervoor zorgen dat de optioneelheid in de routesjabloon en de gemachtigde overeenkomen. Bijvoorbeeld voor het volgende codevoorbeeld:
app.MapGet("/todos/{id}", (int? id) => {});
Maak het type niet-null als de parameter vereist is, door ? uit int? te verwijderen.
app.MapGet("/todos/{id}", (int id) => {});
Als de parameter bedoeld is om optioneel te zijn, moet de operator voor het nullbare waarde type worden toegepast:
app.MapGet("/todos/{id?}", (int? id) => {});
Wanneer waarschuwingen onderdrukken
Onderdruk geen waarschuwing van deze regel. Niet-overeenkomende parameter optionaliteit kan leiden tot onverwacht gedrag met routering tijdens runtime.