El middleware ya no se aplaza al punto de conexión con delegado de solicitud NULL

Tal y como se detalla en https://github.com/dotnet/aspnetcore/issues/42413, el middleware de servicio de archivos (DefaultFilesMiddleware, DirectoryBrowserMiddleware y StaticFileMiddleware) se ha actualizado para que deje de no realizar acciones (es decir, aplazar al siguiente middleware de la canalización) cuando haya un punto de conexión activo con delegado de solicitud null.

Versión introducida

ASP.NET Core 7.0

Comportamiento anterior

Anteriormente, si la solicitud actual tenía un punto de conexión activo, es decir, HttpContext.GetEndpoint() != null, el middleware de servicio de archivos no realizaba ninguna acción y simplemente delegaba al siguiente middleware de la canalización de solicitudes.

Comportamiento nuevo

El middleware de servicio de archivos ahora solo dejará de realizar acciones si hay un punto de conexión activo y su valor de propiedad RequestDelegateno es null, es decir, HttpContext.GetEndpoint()?.RequestDelegate is not null.

Tipo de cambio importante

Este cambio afecta a la compatibilidad binaria.

Motivo del cambio

Este cambio permite que los puntos de conexión compartan metadatos con middleware compatible con ellos, mientras permiten que otro middleware que de otro modo delegaría, también funcione. Los puntos de conexión pueden estar activos en la solicitud para establecer y compartir metadatos con middleware que tengan en cuenta el punto de conexión para que realicen su función prevista. Otro middleware que antes aplazaba su comportamiento cuando un punto de conexión estaba activo, por ejemplo, el middleware de servicio de archivos, también puede funcionar.

Por ejemplo, un punto de conexión con un delegado de solicitud null que contenga metadatos de autorización se puede establecer como punto de conexión activo para una solicitud. Esto hace que AuthorizationMiddleware aplique los requisitos de autorización, que, si se cumplen, permitirían a StaticFileMiddleware atender los archivos solicitados.

Si establece un punto de conexión activo en la solicitud para suprimir el comportamiento del middleware de servicio de archivos, asegúrese de que el punto de conexión tiene un valor distinto de NULL establecido para su propiedad RequestDelegate.

API afectadas

  • IApplicationBuilder.UseStaticFiles()
  • IApplicationBuilder.UseDefaultFiles()
  • IApplicationBuilder.UseDirectoryBrowser()