Share via


Middleware wird für Endpunkte mit NULL-Anforderungsdelegat nicht mehr zurückgestellt

Wie in https://github.com/dotnet/aspnetcore/issues/42413 beschrieben, wurde die Middleware für die Dateibereitstellung (DefaultFilesMiddleware, DirectoryBrowserMiddleware und StaticFileMiddleware) aktualisiert und weist jetzt nicht mehr den Zustand „nicht funktionsfähig“ (Weitergabe der Verarbeitung an die nächste Middleware in der Pipeline) auf, wenn ein aktiver Endpunkt mit einem null-Anforderungsdelegat vorhanden ist.

Eingeführt in Version

ASP.NET Core 7.0

Vorheriges Verhalten

Vorher galt: Wenn die aktuelle Anforderung einen aktiven Endpunkt hatte, d. h. HttpContext.GetEndpoint() != null, führte die Middleware für die Dateibereitstellung keine Aktion aus und delegierte die Verarbeitung einfach an die nächste Middleware in der Anforderungspipeline.

Neues Verhalten

Die Middleware für die Dateibereitstellung führt jetzt nur dann keine Aktion aus, wenn ein aktiver Endpunkt vorhanden ist und der RequestDelegate-Eigenschaftswert nicht null ist, also HttpContext.GetEndpoint()?.RequestDelegate is not null.

Typ des Breaking Changes

Diese Änderung kann sich auf die Binärkompatibilität auswirken.

Grund für die Änderung

Diese Änderung ermöglicht es Endpunkten, Metadaten gemeinsam mit Middleware mit Endpunkten zu nutzen und auch die Funktionalität anderer Middleware zu ermöglichen, die die Verarbeitung andernfalls weitergeben würde. Endpunkte können in der Anforderung aktiv sein, sodass Metadaten festgelegt und gemeinsam mit Middleware genutzt werden können, bei denen ein Endpunkt angegeben ist, sodass die Middleware ihre beabsichtigte Funktion ausführen kann. Andere Middleware (beispielsweise für die Dateibereitstellung), die zuvor die Verarbeitung weitergab, wenn ein Endpunkt aktiv war, kann ebenfalls funktionieren.

Beispielsweise kann ein Endpunkt mit einem null-Anforderungsdelegat, der Autorisierungsmetadaten enthält, als aktiver Endpunkt für eine Anforderung festgelegt werden. Dies führt dazu, dass die AuthorizationMiddleware Autorisierungsanforderungen erzwingt, die bei Erfüllung dazu führen, dass die StaticFileMiddleware die angeforderten Dateien bereitstellen kann.

Wenn Sie einen aktiven Endpunkt für die Anforderung einrichten, um das Verhalten der Middleware für die Dateibereitstellung zu unterdrücken, stellen Sie sicher, dass für die Eigenschaft RequestDelegate des Endpunkt ein Wert ungleich NULL festgelegt ist.

Betroffene APIs

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