미들웨어는 더 이상 null 요청 대리자가 있는 엔드포인트를 따르지 않음
https://github.com/dotnet/aspnetcore/issues/42413에 자세히 설명된 대로 파일 제공 미들웨어(DefaultFilesMiddleware
, DirectoryBrowserMiddleware
및 StaticFileMiddleware
)는 null
요청 대리자가 있는 활성 엔드포인트가 있는 경우 더 이상 작동하지 않도록 업데이트되었습니다(즉, 파이프라인의 다음 미들웨어로 연기).
도입된 버전
ASP.NET Core 7.0
이전 동작
이전에는 현재 요청에 활성 엔드포인트(즉, HttpContext.GetEndpoint() != null
)가 있는 경우 파일 제공 미들웨어는 아무 작업도 수행하지 않고 단순히 요청 파이프라인의 다음 미들웨어에 위임했습니다.
새 동작
이제 파일 제공 미들웨어는 활성 엔드포인트가 있고 해당 RequestDelegate
속성 값이 null
, 즉 HttpContext.GetEndpoint()?.RequestDelegate is not null
이 아닌 경우에만 아무 작업도 수행하지 않습니다.
호환성이 손상되는 변경의 형식
이 변경 내용은 이진 호환성에 영향을 미칩니다.
변경 이유
이러한 변경을 통해 엔드포인트는 엔드포인트 인식 미들웨어와 메타데이터를 공유하는 동시에 다른 미들웨어도 작동하도록 허용할 수 있습니다. 엔드포인트는 의도된 함수를 수행할 수 있도록 엔드포인트를 인식하는 미들웨어와 메타데이터를 설정하고 공유할 목적으로 요청에서 활성화될 수 있습니다. 이전에 엔드포인트가 활성화되었을 때 동작을 연기했던 다른 미들웨어(예: 파일 제공 미들웨어)도 작동할 수 있습니다.
예를 들어, 권한 부여 메타데이터가 포함된 null
요청 위임이 있는 엔드포인트를 요청의 활성 엔드포인트로 설정할 수 있습니다. 이로 인해 AuthorizationMiddleware
가 권한 부여 요구 사항을 적용하게 되며, 이를 충족하면 StaticFileMiddleware
가 요청된 파일을 제공할 수 있습니다.
권장 작업
파일 제공 미들웨어의 동작을 표시하지 않기 위해 요청에 활성 엔드포인트를 설정하는 경우 엔드포인트의 RequestDelegate
속성에 null이 아닌 값이 설정되어 있는지 확인합니다.
영향을 받는 API
IApplicationBuilder.UseStaticFiles()
IApplicationBuilder.UseDefaultFiles()
IApplicationBuilder.UseDirectoryBrowser()
.NET
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기