Geschrieben vorne
Bezüglich des relevanten Inhalts von IHttpModule wurde ich auch im Interview gefragt, und ich hatte vage das Gefühl, dass diese Oberfläche eine Init-Methode hat, die eine Reihe von Ereignissen mit der Init-Methode in der Implementierungsklasse registrieren kann. Zu Hause gibt es an diesem Wochenende wirklich nichts zu tun, selbst wenn es nur darum geht, die Lücken in diesem Wissen zu überprüfen und zu füllen.
IHttpModule funktioniert
Freunde, die mit asp.net Lebenszyklus vertraut sind, sollten wissen, dass die Ausführung von HttpModule vor HttpHandler ausgeführt wird und nach der Ausführung einer Reihe von Ereignissen von HttpModule, dann HttpHandler und anschließend einigen Ereignissen von HttpModule. Für Details siehe bitte das folgende Lebenszyklusdiagramm.
Der HttpHandler ist der Ort, an dem die HTTP-Anfrage verarbeitet wird, das HttpModule ist der "einzige Weg" für eine HTTP-Anfrage, sodass Sie einige erforderliche Informationen zusätzlich zu den HTTP-Anfragen hinzufügen können, bevor diese HTTP-Anfrage an das reale Anforderungsverarbeitungszentrum (HttpHandler) weitergeleitet wird, oder zusätzliche Arbeit an den abgefangenen HTTP-Anfragen durchführen können. Oder in manchen Fällen einfach HTTP-Anfragen zu beenden, die bestimmte Bedingungen erfüllen, was als Filter fungieren kann.
Eine HTTP-Anfrage wird zu einem Zeitpunkt (ResolveRequestCache-Ereignis) während der Auslieferung des HttpModule-Containers an den HttpHandler-Container weitergegeben. Nach diesem Ereignis erstellt der HttpModule-Container eine Ingress-Instanz des HttpHandlers, doch anstatt die Kontrolle über die HTTP-Anfrage aufzugeben, löst er weiterhin die AcquireRequestState- und PreRequestHandlerExcute-Ereignisse aus. Nach dem PreRequestHandlerExcute-Ereignis übergibt das HttpModule-Fenster vorübergehend die Kontrolle an den HttpHandler-Container für die tatsächliche HTTP-Anfrageverarbeitung.
Im Inneren des HttpHandler-Containers wird die Methode ProcessRequest ausgeführt, um HTTP-Anfragen zu verarbeiten. Nachdem der Container-HttpHandler die gesamte HTTP-Anfrage verarbeitet hat, gibt er die Kontrolle an das HttpModule zurück, das die verarbeitete HTTP-Anfrage weiterhin Schicht für Schicht weitergibt, bis sie an den Client zurückgegeben wird.
Eine Instanz
Projektstruktur
MyHttpModule-Code
Registrieren Sie ein benutzerdefiniertes HttpModule in web.config
Durchstöbern Sie die Seite Default.aspx
Wie ist also die Reihenfolge der Ausführung einer Reihe von Ereignissen im Lebenszyklus?
Durchstöbern Sie die Ergebnisse
Verwenden Sie HttpModule, um die HTTP-Anfrage zu beenden
Ergebnis
Zusammenfassung
Hier stellen wir die wichtigste Schnittstelle im asp.net-Lebenszyklus vor, IHttpModule, die als Ereignisschnittstelle beschrieben werden kann, da in der Init-Methode in der Implementierungsklasse verschiedene Ereignisse im Lebenszyklus registriert und verschiedene Logiken im Ereignis definiert werden können.
|