中介軟體不再延遲至具有 Null 要求委派的端點
如 https://github.com/dotnet/aspnetcore/issues/42413 中所述,當有作用中端點具有 null
要求委派時,檔案提供中介軟體 (DefaultFilesMiddleware
、DirectoryBrowserMiddleware
和 StaticFileMiddleware
) 已更新為不再不執行作業 (也就是,會延遲到管線中的下一個中介軟體)。
導入的版本
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()