Udostępnij za pośrednictwem


Oprogramowanie pośredniczące nie jest już odchyliwane do punktu końcowego przy użyciu delegata żądania o wartości null

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 było już operacji (czyli odroczenia do następnego oprogramowania pośredniczącego w potoku), gdy istnieje aktywny punkt końcowy z pełnomocnikiem null żądania.

Wprowadzona wersja

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 powodującej niezgodność

Ta zmiana ma wpływ na zgodność binarną.

Przyczyna wprowadzenia zmiany

Ta zmiana umożliwia punktom końcowym udostępnianie metadanych za pomocą oprogramowania pośredniczącego obsługującego punkt końcowy, umożliwiając jednocześnie inne oprogramowanie pośredniczące, które w przeciwnym razie będzie odroczyć działanie. Punkty końcowe mogą być aktywne w żądaniu na potrzeby ustawiania i udostępniania metadanych za pomocą oprogramowania pośredniczącego, które są świadome punktu końcowego, aby umożliwić im wykonywanie zamierzonej funkcji. 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 pełnomocnikiem null żądania zawierającym metadane autoryzacji można ustawić jako aktywny punkt końcowy dla żądania. Spowoduje AuthorizationMiddleware to wymuszenie wymagań dotyczących autoryzacji, które, jeśli zostały spełnione, pozwoliłoby na StaticFileMiddleware obsługę żądanych plików.

Jeśli polegasz na ustawieniu aktywnego punktu końcowego na żądaniu, aby pominąć zachowanie oprogramowania pośredniczącego obsługującego pliki, upewnij się, że punkt końcowy ma ustawioną wartość inną niż null dla jego RequestDelegate właściwości.

Dotyczy interfejsów API

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