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.
Empfohlene Maßnahme
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()
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für