미들웨어: 새 Use 오버로드

app.Use의 새 오버로드가 도입되었습니다. app.Use는 호출하지만 next 미들웨어를 호출하지 않으면 이제 컴파일러 오류 CS0121이 발생합니다.

다음 메서드 또는 속성 사이에서 호출이 모호합니다. 'UseExtensions.Use(IApplicationBuilder, Func<HttpContext, Func, Task>)' 및 'UseExtensions.Use(IApplicationBuilder, Func<HttpContext, RequestDelegate, Task>)'

오류를 해결하려면 app.Use 대신 app.Run을 사용합니다.

자세한 내용은 GitHub 이슈 dotnet/aspnetcore#32020을 참조하세요.

도입된 버전

ASP.NET Core 6.0

이전 동작

app.Use(async (context, next) =>
{
    await next();
});

또는

app.Use(async (context, next) =>
{
    await SomeAsyncWork();
    // next not called...
});

새 동작

이제 next 대리자에 context를 전달할 수 있습니다.

app.Use(async (context, next) =>
{
    await next(context);
});

미들웨어에서 next를 호출하지 않는 경우 app.Run을 사용합니다.

app.Run(async (context) =>
{
    await SomeAsyncWork();
    // next never called
});

변경 이유

이전 Use 메서드는 요청당 두 개의 개체를 할당합니다. 새 오버로드는 next 미들웨어를 호출하는 방법을 약간 변경하여 이러한 할당을 방지합니다.

컴파일 오류가 발생하는 경우 next 대리자를 사용하지 않고 app.Use를 호출하기 때문입니다. 오류를 해결하려면 app.Run으로 전환합니다.

영향을 받는 API

없음