Napísané vpredu
Čo sa týka relevantného obsahu IHttpModule, počas rozhovoru sa ma tiež pýtali a nejasne som mal pocit, že toto rozhranie má metódu Init, ktorá dokáže zaznamenať sériu udalostí s metódou Init v triede implementácie. Doma tento víkend naozaj nie je čo robiť, aj keď je to len kontrola a doplnenie medzer v tejto vedomosti.
IHttpModule funguje
Priatelia, ktorí poznajú asp.net životný cyklus, by mali vedieť, že spustenie HttpModule sa vykonáva pred HttpHandlerom, po vykonaní série udalostí HttpModule, potom vykonaní HttpHandleru a následne vykonaní niektorých udalostí HttpModule. Pre podrobnosti si pozrite nasledujúci diagram životného cyklu.
HttpHandler je miesto na spracovanie HTTP požiadavky, HttpModule je "jediný spôsob" pre HTTP požiadavku, takže môžete pridať potrebné informácie nad HTTP požiadavku predtým, než je tento HTTP požiadavok odoslaný do skutočného centra na spracovanie požiadaviek (HttpHandler), alebo vykonať dodatočnú prácu na zachytených HTTP požiadavkách. Alebo v niektorých prípadoch jednoducho ukončiť HTTP požiadavky, ktoré spĺňajú určité podmienky, čo môže pôsobiť ako filter.
HTTP požiadavka bude odoslaná do HttpHandler kontajnera v určitom bode (udalosť ResolveRequestCache) počas doručenia HttpModule kontajnera. Po tejto udalosti kontajner HttpModule vytvorí vstupnú inštanciu HttpHandleru, ale namiesto toho, aby sa vzdal kontroly nad HTTP požiadavkou, pokračuje v spúšťaní udalostí AcquireRequestState a PreRequestHandlerExcute. Po udalosti PreRequestHandlerExcute okno HttpModule dočasne dáva kontrolu kontajneru HttpHandler pre skutočné spracovanie HTTP požiadaviek.
Vo vnútri HttpHandler kontajnera sa vykonáva metóda ProcessRequest na spracovanie HTTP požiadaviek. Po spracovaní celej HTTP požiadavky kontajnerom HttpHandler vráti kontrolu HttpModule, ktorý pokračuje v odovzdávaní spracovaných HTTP požiadaviek tok po vrstvách, až kým nie sú vrátené klientovi.
Príklad
Štruktúra projektu
Kód MyHttpModule
Zaregistrujte vlastný HttpModule v web.config
Prehliadajte stránku Default.aspx
Aké je teda poradie vykonania série udalostí v životnom cykle?
Prezrite si výsledky
Použite HttpModule na ukončenie HTTP požiadavky
výsledok
súhrn
Tu predstavujeme najdôležitejšie rozhranie v životnom cykle asp.net, IHttpModule, ktoré možno opísať ako rozhranie udalostí, pretože v metóde Init v implementačnej triede je možné zaznamenať rôzne udalosti v životnom cykle a definovať rôzne logiky v udalosti.
|