Was ist Middleware?
Middleware ist Software, die in Anwendungspipelines zusammengesetzt wird, um Anfragen und Antworten zu verarbeiten. Jede Komponente:
- Entscheiden Sie, ob Sie die Anfrage an die nächste Komponente in der Pipeline weiterleiten.
- Arbeiten können vor und nach dem Aufruf der nächsten Komponente in der Pipeline ausgeführt werden.
Anfrage-Delegierte werden verwendet, um eine Anfragepipeline zu erstellen, die jede HTTP-Anfrage verarbeitet.
Anfrage-Delegierte werden mit den Erweiterungsmethoden Run, Map und Use konfiguriert. Ein separater Request-Delegate kann in einer anonymen Inline-Methode (genannt Inline-Middleware) angegeben oder in einer wiederverwendbaren Klasse definiert werden. Diese wiederverwendbaren Klassen und Inline-Anonymisierungsmethoden sind Middleware oder Middleware-Komponenten. Jede Middleware-Komponente im Anfragefluss ist dafür verantwortlich, die nächste Komponente in der Pipeline aufzurufen und, falls angemessen, den Link-Kurzschluss aufzurufen.
Die Migration von HTTP-Modulen zu Middleware erklärt den Unterschied zwischen ASP.NET Core und Request Pipelines in früheren Versionen (ASP.NET) und liefert weitere Middleware-Beispiele.
Verwenden Sie IApplicationBuilder, um eine Middleware-Pipeline zu erstellen
Der ASP.NET Core-Anforderungsprozess besteht aus einer Reihe von Anfragedelegierten, wie in der folgenden Abbildung gezeigt (der Ausführungsprozess folgt dem schwarzen Pfeil):
Jeder Delegierte kann vor und nach dem nächsten Delegierten Aktionen ausführen. Der Delegierte kann außerdem entscheiden, die Anfrage nicht an den nächsten Delegierten weiterzugeben, was als Kurzschluss in der Anfragepipeline bezeichnet wird. Ein Kurzschluss ist in der Regel wünschenswert, da er unnötige Arbeit verhindert. Zum Beispiel kann statische Datei-Middleware eine Anfrage für eine statische Datei zurückgeben und den Rest der Pipeline kurzschließen. Exception Handling Delegates müssen früh in der Pipeline aufgerufen werden, damit sie Ausnahmen in späteren Pipelines erkennen können.
Das Einfachste ist wahrscheinlich, einen Delegierten ASP.NET der Core-Anwendung einzurichten, der alle Anfragen bearbeitet. Dieses Szenario beinhaltet nicht die eigentliche Anfragepipeline. Stattdessen wird für jede HTTP-Anfrage eine anonyme Methode aufgerufen.
Die erste App. Run Delegate beendet die Pipeline.
Es gibt einen Code wie diesen:
Über den Browser zugegriffen, stellt sich heraus, dass es tatsächlich in der ersten App ist. Run beendet die Pipeline.
Du kannst mehrere Anfragen über die App delegieren. Die Nutzung ist miteinander verbunden. Der nächste Parameter repräsentiert den nächsten Delegierten in der Pipeline. (Beachten Sie, dass Sie die Pipeline beenden können, indem Sie den nächsten Parameter nicht aufrufen.) Sie können in der Regel Aktionen vor und nach der nächsten Delegation ausführen, wie im folgenden Beispiel gezeigt:
Verwendung eines Browsers, um auf Ergebnisse zuzugreifen wie:
Es ist zu sehen, dass die Ausführungsreihenfolge des Anfrage-Delegierten dem obigen Flussdiagramm folgt.
Anmerkung:
Nachdem die Antwort an den Kunden gesendet wurde, rufen Sie als Nächstes nicht an. Invoke。 Nachdem die Antwort begonnen hat, lösen Änderungen an der HttpResponse eine Ausnahme aus. Zum Beispiel führt das Setzen von Antwortheadern, Statuscodes usw. zu einer Ausnahme. Schreibe den Antworttext nach dem nächsten Anruf.
kann zu einem Vertragsbruch führen. Zum Beispiel, wenn man mehr schreibt als die Inhaltslänge, die in der Inhaltslänge beschrieben ist.
Die Formatierung responsiver Inhalte kann fehlerhaft sein. Schreibe zum Beispiel einen HTML-Fuß in eine CSS-Datei.
HttpResponse.HasStarted ist ein nützlicher Hinweis, um anzuzeigen, ob ein Response-Header gesendet wurde und/oder der Text geschrieben wurde.
Eingebaute Middleware
ASP.NET Core wird mit folgenden Middleware-Komponenten geliefert:
| Middleware | Beschreibung | | Authentifizierung | Authentifizierungsunterstützung ist verfügbar | | CORS | Konfiguration des domänenübergreifenden Ressourcenaustauschs | | Response-Caching | Cache-Antwort-Unterstützung ist verfügbar | | Antwortkompression | Unterstützung für Antwortkompression bieten | | Routing | Definition und Einschränkung der Request-Routing | | Sitzung | Bietet Benutzersitzungsverwaltung | | Statische Dateien | Bietet Unterstützung für statische Datei- und Verzeichnisdurchsuchung | | URL-Umschreib-Middleware | Wurde verwendet, um URLs umzuschreiben und Unterstützung für Weiterleitungen anzufordern |
|