Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Tipp
Diese Inhalte sind ein Auszug aus dem eBook „Blazor for ASP NET Web Forms Developers for Azure“, verfügbar unter .NET Docs oder als kostenlos herunterladbare PDF-Datei, die offline gelesen werden kann.
Eine ASP.NET Core-App basiert auf einer Reihe von Middleware. Middleware ist Handler, die in einer Pipeline angeordnet sind, um Anforderungen und Antworten zu verarbeiten. In einer Web Forms-App lösen HTTP-Handler und Module ähnliche Probleme. In ASP.NET Core werden Module, Handler, Global.asax.cs und der App-Lebenszyklus durch Middleware ersetzt. In diesem Kapitel erfahren Sie mehr über Middleware im Kontext einer Blazor App.
Überblick
Die ASP.NET Core-Anforderungspipeline besteht aus einer Sequenz von Anforderungsdelegaten, die nacheinander aufgerufen werden. Das Konzept wird im folgenden Diagramm veranschaulicht. Der Ausführungsthread folgt den schwarzen Pfeilen.
Im vorherigen Diagramm fehlt ein Konzept von Lebenszyklusereignissen. Dieses Konzept basiert darauf, wie ASP.NET Web forms-Anforderungen behandelt werden. Dieses System macht es einfacher, zu argumentieren, welcher Prozess auftritt, und ermöglicht es Middleware, an jedem Punkt einzufügen. Middleware wird in der Reihenfolge ausgeführt, in der sie der Anforderungspipeline hinzugefügt wird. Sie werden auch im Code anstelle von Konfigurationsdateien hinzugefügt, in der Regel in Startup.cs.
Katana
Leser, die mit Katana vertraut sind, fühlen sich in ASP.NET Core wohl. In der Tat ist Katana ein Framework, von dem ASP.NET Core abgeleitet wird. Es hat ähnliche Middleware- und Pipelinemuster für ASP.NET 4.x eingeführt. Middleware, die für Katana entwickelt wurde, kann an die Arbeit mit der ASP.NET Core-Pipeline angepasst werden.
Allgemeine Middleware
ASP.NET 4.x enthält viele Module. In ähnlicher Weise verfügt ASP.NET Core auch über viele Middleware-Komponenten. IIS-Module können in einigen Fällen mit ASP.NET Core verwendet werden. In anderen Fällen sind systemeigene ASP.NET Core-Middleware möglicherweise verfügbar.
In der folgenden Tabelle sind Ersatz-Middleware und -Komponenten in ASP.NET Core aufgeführt.
Modul | ASP.NET 4.x-Modul | ASP.NET Core-Option |
---|---|---|
HTTP-Fehler | CustomErrorModule |
Middleware für Statuscodeseiten |
Standarddokument | DefaultDocumentModule |
Middleware für Standarddateien |
Verzeichnissuche | DirectoryListingModule |
Middleware für Verzeichnisbrowsen |
Dynamische Komprimierung | DynamicCompressionModule |
Middleware für Reaktionskomprimierung |
Ablaufverfolgung für Anforderungsfehler | FailedRequestsTracingModule |
ASP.NET Kernprotokollierung |
Zwischenspeichern von Dateien | FileCacheModule |
Antworten zwischenspeichernde Middleware |
HTTP-Zwischenspeicherung | HttpCacheModule |
Antworten zwischenspeichernde Middleware |
HTTP-Protokollierung | HttpLoggingModule |
ASP.NET Kernprotokollierung |
HTTP-Umleitung | HttpRedirectionModule |
URL Rewriting Middleware |
ISAPI-Filter | IsapiFilterModule |
Middleware |
ISAPI | IsapiModule |
Middleware |
Anforderungsfilterung | RequestFilteringModule |
Middleware-IRule zur URL-Umschreibung |
URL-Umschreibung† | RewriteModule |
URL Rewriting Middleware |
Statische Komprimierung | StaticCompressionModule |
Middleware für Reaktionskomprimierung |
Statischer Inhalt | StaticFileModule |
Middleware für statische Dateien |
URL-Autorisierung | UrlAuthorizationModule |
ASP.NET Core Identity |
Diese Liste ist nicht erschöpfend, sollte aber eine Vorstellung davon geben, welche Zuordnung zwischen den beiden Frameworks besteht. Eine detailliertere Liste finden Sie in IIS-Modulen mit ASP.NET Core.
Benutzerdefinierte Middleware
Integrierte Middleware behandelt möglicherweise nicht alle Szenarien, die für eine App erforderlich sind. In solchen Fällen ist es sinnvoll, Eigene Middleware zu erstellen. Es gibt mehrere Methoden zum Definieren von Middleware, bei denen es sich beim einfachsten Vorkommen um einen einfachen Delegaten handelt. Beachten Sie die folgende Middleware, die eine Kulturanforderung aus einer Abfrage-Zeichenfolge akzeptiert:
public class Startup
{
public void Configure(IApplicationBuilder app)
{
app.Use(async (context, next) =>
{
var cultureQuery = context.Request.Query["culture"];
if (!string.IsNullOrWhiteSpace(cultureQuery))
{
var culture = new CultureInfo(cultureQuery);
CultureInfo.CurrentCulture = culture;
CultureInfo.CurrentUICulture = culture;
}
// Call the next delegate/middleware in the pipeline
await next();
});
app.Run(async (context) =>
await context.Response.WriteAsync(
$"Hello {CultureInfo.CurrentCulture.DisplayName}"));
}
}
Middleware kann auch als Klasse definiert werden, entweder durch Implementieren der IMiddleware
Schnittstelle oder durch folgende Middleware-Konvention. Weitere Informationen finden Sie unter Schreiben von benutzerdefinierter ASP.NET Core Middleware.