Udostępnij za pośrednictwem


ASP0007: Niezgodność parametrów trasy i argumentów jest niezgodna

Wartość
Identyfikator reguły ASP0007
Kategoria Użycie
Poprawka powodująca niezgodność lub niezgodność Niezgodność

Przyczyna

Parametr trasy jest zadeklarowany zgodnie z wymaganiami w definicji delegata, ale jest oznaczony jako opcjonalny w trasie punktu końcowego.

Opis reguły

Po zadeklarowaniu punktu końcowego można zadeklarować opcjonalne parametry zarówno w szablonie trasy, jak i w argumentach procedury obsługi tras. Jeśli parametr jest zadeklarowany jako opcjonalny w procedurze obsługi, należy go również zadeklarować jako opcjonalny w szablonie trasy. Na przykład polecenie GET /todos nie może rozpoznać dopasowania dla następującego kodu:

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

Powyższy kod nie pasuje do metody GET /todos , ponieważ nie podano parametru id , mimo że jest on traktowany jako opcjonalny w procedurze obsługi tras.

Jak naprawić naruszenia

Aby naprawić naruszenie tej reguły, upewnij się, że opcjonalność szablonu trasy i dopasowanie delegata. Na przykład dla następującego przykładu kodu:

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

Jeśli parametr ma być wymagany, ustaw typ bez wartości null, usuwając parametr ? z int?:

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

Jeśli parametr ma być opcjonalny, należy zastosować operator ? typu wartości null:

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

Kiedy pomijać ostrzeżenia

Nie pomijaj ostrzeżenia z tej reguły. Niezgodność parametrów opcjonalnych może spowodować nieoczekiwane zachowanie routingu w czasie wykonywania.