설명서
-
최소 경로 처리기를 호출하기 전에 매개 변수를 채우는 방법 알아보기.
이 브라우저는 더 이상 지원되지 않습니다.
최신 기능, 보안 업데이트, 기술 지원을 이용하려면 Microsoft Edge로 업그레이드하세요.
이제 ASP.NET Core는 Map*
메서드의 매개 변수 형식에 대한 TryParse
및 BindAsync
메서드의 유효성을 검사합니다. 유효한 메서드를 찾을 수 없는 경우 ASP.NET Core는 잘못된 메서드를 찾고 시작 시 예외(있는 경우)를 throw합니다. 예외는 메서드 시그니처가 잘못되었을 않을 수 있음을 알려서 예기치 않은 동작을 방지하는 데 도움이 됩니다.
ASP.NET Core 6.0 RC 2
이전 버전의 ASP.NET Core 6에서는 TryParse
또는 BindAsync
메서드에 잘못된 시그니처가 있는 경우 예외가 throw되지 않았고 프레임워크가 본문에서 JSON을 바인딩하려고 시도했습니다.
// Todo.TryParse is not in a valid format.
// Will try to bind from body as JSON instead.
app.MapPost("/endpoint", (Todo todo) => todo.Item);
public class Todo
{
public string Item { get; set; }
public static bool TryParse(string value) => true;
}
ASP.NET Core가 예상된 구문과 일치하지 않는 퍼블릭 TryParse
또는 BindAsync
메서드를 찾는 경우 시작 시 예외가 throw됩니다. 이전 예제에서는 다음과 비슷한 오류를 생성합니다.
TryParse method found on Todo with incorrect format. Must be a static method with format
bool TryParse(string, IFormatProvider, out Todo)
bool TryParse(string, out Todo)
but found
Boolean TryParse(System.String)
이 변경은 이진 호환성 및 소스 호환성에 영향을 줄 수 있습니다.
개발자가 잘못된 형식을 사용하는 BindAsync
및 TryParse
메서드를 인식할 수 있도록 이 변경을 적용했습니다. 이전에 프레임워크는 매개 변수가 본문의 JSON이라고 가정하도록 대체됩니다. 이 가정으로 인해 예기치 않은 동작이 발생할 수 있습니다.
매개 변수 바인딩 이외의 이유로 형식에 서로 다른 구문이 포함된 BindAsync
또는 TryParse
메서드가 있는 경우 이제 시작 시 예외가 발생합니다. 이 동작을 방지하기 위해 여러 가지 전략을 사용할 수 있습니다.
BindAsync
또는 TryParse
메서드를 internal
또는 private
로 변경합니다.BindAsync
또는 TryParse
메서드를 추가합니다. 유효한 메서드가 발견되면 잘못된 메서드는 무시됩니다.[FromBody]
로 표시합니다.RequestDelegateFactory.Create()
IEndpointRouteBuilder.Map*()
메서드(예: app.MapGet()
, app.MapPost()
).NET 피드백
.NET 은(는) 오픈 소스 프로젝트입니다. 다음 링크를 선택하여 피드백을 제공해 주세요.
설명서
최소 경로 처리기를 호출하기 전에 매개 변수를 채우는 방법 알아보기.
학습