Napisane na początku
Jeśli chodzi o istotną zawartość IHttpModule, zapytano mnie także podczas rozmowy kwalifikacyjnej i miałem ogólne wrażenie, że ten interfejs ma metodę Init, która może rejestrować serię zdarzeń z metodą Init w klasie implementacyjnej. W domu w ten weekend naprawdę nie ma nic do roboty, nawet jeśli chodzi o sprawdzenie i uzupełnienie luk w tej wiedzy.
Działa IHttpModule
Znajomi zaznajomieni z cyklem życia asp.net powinni wiedzieć, że wykonanie HttpModule jest wykonywane przed HttpHandlerem, po wykonaniu serii zdarzeń HttpModule, następnie wykonaniu HttpHandler, a następnie niektórych zdarzeniach HttpModule. Szczegóły można znaleźć w poniższym schemacie cyklu życia.
HttpHandler to miejsce do obsługi żądań http, HttpModule to "jedyny sposób" dla żądania HTTP, więc możesz dodać wymagane informacje na podstawie informacji HTTP zanim to żądanie HTTP zostanie przekazane do prawdziwego centrum przetwarzania żądań (HttpHandler), albo wykonać dodatkową pracę nad przechwyconymi informacjami o żądaniu HTTP. A w niektórych przypadkach po prostu zakończyć żądania HTTP spełniające określone warunki, co może działać jako filtr.
Żądanie HTTP zostanie przekazane do kontenera HttpHandler w pewnym momencie (zdarzenie ResolveRequestCache) podczas dostarczania kontenera HttpModule. Po tym zdarzeniu kontener HttpModule tworzy instancję wejściową HttpHandlera, ale zamiast oddać kontrolę nad żądaniem HTTP, nadal uruchamia zdarzenia AcquireRequestState i PreRequestHandlerExcute. Po zdarzeniu PreRequestHandlerExcute, okno HttpModule tymczasowo przekazuje kontrolę kontenerowi HttpHandler do rzeczywistego przetwarzania żądań HTTP.
W kontenerze HttpHandler metoda ProcessRequest jest wykonywana do obsługi żądań HTTP. Po przetworzeniu całego żądania HTTP kontener HttpHandler zwraca kontrolę do HttpModule, który nadal przekazuje przetworzone informacje o żądaniu HTTP warstwa po warstwie, aż zostaną one zwrócone klientowi.
Przykład
Struktura projektu
Kod MyHttpModule
Zarejestruj niestandardowy HttpModule w web.config
Przeglądaj stronę Default.aspx
Jaki jest więc porządek realizacji serii zdarzeń w cyklu życia?
Przeglądaj wyniki
Użyj HttpModule do zakończenia żądania Http
wynik
streszczenie
Tutaj przedstawiamy najważniejszy interfejs w cyklu życia asp.net, IHttpModule, który można opisać jako interfejs zdarzeń, ponieważ w metodzie Init w klasie implementacyjnej można rejestrować różne zdarzenia w cyklu życia oraz definiować różne logiki w wydarzeniu.
|