다음을 통해 공유


ASP0007: 경로 매개 변수 및 인수 선택 사항이 일치하지 않습니다.

가치
규칙 아이디 ASP0007
범주 사용법
수정 사항이 문제를 해결하고 있는지 혹은 새로운 문제를 일으키지 않는지 여부 비손상

원인

경로 매개 변수는 대리자 정의에서 필요에 따라 선언되지만 엔드포인트 경로에서 선택 사항으로 표시됩니다.

규칙 설명

엔드포인트가 선언되면 경로 템플릿과 경로 처리기 인수 모두에서 매개 변수의 선택성을 선언할 수 있습니다. 매개 변수가 처리기에서 선택 사항으로 선언되면 경로 템플릿에서도 선택 사항으로 선언해야 합니다. 예를 들어 GET /todos 에서 다음 코드에 대한 일치 항목을 확인하는 데 실패합니다.

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

이전 코드는 경로 처리기에서 선택 사항으로 처리되더라도 매개 변수가 제공되지 않았기 때문에 id GET /todos 과 일치하지 않습니다.

위반을 해결하는 방법

이 규칙 위반 문제를 해결하려면 경로 템플릿의 선택 사항과 대리자가 일치하는지 확인합니다. 예를 들어 다음 코드 샘플은 다음과 같습니다.

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

매개 변수가 필요한 경우, 다음의 int?에서 ?를 제거하여 형식을 null을 허용하지 않도록 합니다.

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

매개 변수가 선택 사항인 경우 nullable 값 형식 연산 ? 자를 적용해야 합니다.

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

경고를 표시하지 않는 경우

이 규칙의 경고를 숨기지 마세요. 매개 변수 선택 사항이 일치하지 않는 경우 런타임에 라우팅 시 예기치 않은 동작이 발생할 수 있습니다.