미들웨어는 더 이상 null 요청 대리자가 있는 엔드포인트를 따르지 않음

https://github.com/dotnet/aspnetcore/issues/42413에 자세히 설명된 대로 파일 제공 미들웨어(DefaultFilesMiddleware, DirectoryBrowserMiddlewareStaticFileMiddleware)는 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()