Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Jak opisano w temacie https://github.com/dotnet/aspnetcore/issues/42413, oprogramowanie pośredniczące obsługujące pliki (DefaultFilesMiddleware
, DirectoryBrowserMiddleware
i StaticFileMiddleware
) zostało zaktualizowane tak, aby nie no-op (czyli odroczyć do następnego oprogramowania pośredniczącego w potoku), gdy istnieje aktywny punkt końcowy z pełnomocnikiem null
żądania.
Wersja wprowadzona
ASP.NET Core 7.0
Poprzednie zachowanie
Wcześniej, jeśli bieżące żądanie miało aktywny punkt końcowy, czyli HttpContext.GetEndpoint() != null
, oprogramowanie pośredniczące obsługujące pliki nie wykona żadnej akcji i po prostu deleguje do następnego oprogramowania pośredniczącego w potoku żądania.
Nowe zachowanie
Oprogramowanie pośredniczące obsługujące pliki nie będzie teraz wykonywać żadnej akcji tylko wtedy, gdy istnieje aktywny punkt końcowy, a jego RequestDelegate
wartość właściwości to nie null
, czyli HttpContext.GetEndpoint()?.RequestDelegate is not null
.
Typ zmiany przełamującej
Ta zmiana ma wpływ na zgodność binarną.
Przyczyna zmiany
Ta zmiana umożliwia punktom końcowym wymianę metadanych z oprogramowaniem pośredniczącym obsługującym punkty końcowe, jednocześnie pozwalając innemu oprogramowaniu pośredniczącemu, które w przeciwnym razie zostałoby odroczone, również funkcjonować. Punkty końcowe mogą być aktywne w żądaniach w celu ustawiania i udostępniania metadanych za pomocą oprogramowania pośredniego, które jest świadome punktów końcowych, aby mogły wykonać swoją zamierzoną funkcję. Inne oprogramowanie pośredniczące, które wcześniej odroczało ich zachowanie, gdy punkt końcowy był aktywny, na przykład oprogramowanie pośredniczące obsługujące pliki, może również działać.
Na przykład punkt końcowy z delegatem żądania null
zawierającym metadane autoryzacji może być ustawiony jako aktywny punkt końcowy dla żądania. powoduje, że AuthorizationMiddleware
wymusza wymagania dotyczące autoryzacji, które, jeśli zostaną spełnione, pozwolą StaticFileMiddleware
obsłużyć żądane pliki.
Zalecana akcja
Jeśli polegasz na aktywowaniu punktu końcowego w żądaniu, aby zablokować działanie pośredniczącej warstwy oprogramowania obsługującego pliki, upewnij się, że punkt końcowy ma przypisaną wartość inną niż null dla swojej właściwości RequestDelegate
.
Interfejsy API, których dotyczy problem
IApplicationBuilder.UseStaticFiles()
IApplicationBuilder.UseDefaultFiles()
IApplicationBuilder.UseDirectoryBrowser()