Napsáno na začátku
Co se týče relevantního obsahu IHttpModule, byl jsem také během rozhovoru dotazován a měl jsem matný pocit, že toto rozhraní má metodu Init, která dokáže zaznamenat sérii událostí s metodou Init v třídě implementace. Doma tento víkend opravdu není co dělat, i kdyby to mělo být jen o kontrole a doplnění mezer v této znalosti informací.
Práce IHttpModulu
Přátelé, kteří znají asp.net životní cyklus, by měli vědět, že spuštění HttpModule se provádí před HttpHandlerem, a po spuštění série událostí HttpModule, poté vykonání HttpHandleru a následně vykonání některých událostí HttpModule. Pro podrobnosti prosím viz následující schéma životního cyklu.
HttpHandler je místo, kde se http požadavek zpracovává, HttpModule je "jediný způsob" pro HTTP požadavek, takže můžete přidat potřebné informace nad HTTP požadavky před tím, než je tento HTTP požadavek předán skutečnému centru pro zpracování požadavků (HttpHandler), nebo provést další práci na zachycených HTTP požadavcích. Nebo v některých případech jednoduše ukončit HTTP požadavky, které splňují určité podmínky, což může fungovat jako filtr.
HTTP požadavek bude v určitém okamžiku předán kontejneru HttpHandler (událost ResolveRequestCache) během doručení kontejneru HttpModule. Po této události kontejner HttpModule vytvoří vstupní instanci HttpHandleru, ale místo aby se vzdal kontroly nad HTTP požadavkem, pokračuje v spouštění událostí AcquireRequestState a PreRequestHandlerExcute. Po události PreRequestHandlerExcute dočasně okno HttpModule předává kontrolu kontejneru HttpHandler pro skutečné zpracování HTTP požadavků.
Uvnitř kontejneru HttpHandler se metoda ProcessRequest vykonává pro zpracování HTTP požadavků. Po zpracování celého HTTP požadavku kontejnerem HttpHandler vrací kontrolu HttpModulu, který pokračuje v předávání zpracovaných HTTP požadavků tok po vrstvách, dokud nejsou vráceny klientovi.
Instance
Struktura projektu
Kód MyHttpModule
Zaregistrujte vlastní HttpModule ve web.config
Prohlížení stránky Default.aspx
Jaké je tedy pořadí provedení série událostí v životním cyklu?
Prohlédněte si výsledky
Použijte HttpModule k ukončení HTTP požadavku
výsledek
shrnutí
Zde představujeme nejdůležitější rozhraní v životním cyklu asp.net, IHttpModule, které lze popsat jako event interface, protože v metodě Init v implementační třídě lze registrovat různé události v životním cyklu a v události definovat různé logiky.
|