Skrevet foran
Med hensyn til det relevante indhold i IHttpModule blev jeg også spurgt under interviewet, og jeg følte svagt, at dette interface har en Init-metode, som kan registrere en række begivenheder med Init-metoden i implementeringsklassen. Hjemme i weekenden er der virkelig ikke noget at lave, selv hvis det bare er at tjekke og udfylde hullerne i denne viden.
IHttpModule virker
Venner, der kender asp.net livscyklus, bør vide, at udførelsen af HttpModule udføres før HttpHandler, og efter at en række begivenheder i HttpModule er udført, derefter udfører HttpHandler og nogle begivenheder i HttpModule. For detaljer, se venligst det følgende livscyklusdiagram.
HttpHandler er stedet til at håndtere HTTP-forespørgslerne, HttpModule er den "eneste måde" for en HTTP-forespørgsel, så du kan tilføje noget nødvendig information oven på HTTP-anmodningsinformationen, før denne HTTP-anmodning sendes til det rigtige anmodningsbehandlingscenter (HttpHandler), eller udføre noget ekstra arbejde på den opsnappede HTTP-anmodningsinformation. Eller i nogle tilfælde blot afslutte HTTP-forespørgsler, der opfylder visse betingelser, hvilket kan fungere som et filter.
En HTTP-anmodning vil blive sendt til HttpHandler-containeren på et tidspunkt (ResolveRequestCache-begivenheden) under leveringen af HttpModule-containeren. Efter denne hændelse opretter HttpModule-containeren en ingress-instans af HttpHandler, men i stedet for at opgive kontrollen over HTTP-anmodningen, fortsætter den med at affyre AcquireRequestState- og PreRequestHandlerExcute-begivenhederne. Efter PreRequestHandlerExcute-begivenheden giver HttpModule-vinduet midlertidigt kontrol til HttpHandler-containeren for reel HTTP-anmodningsbehandling.
Inde i HttpHandler-containeren udføres ProcessRequest-metoden for at håndtere HTTP-anmodninger. Efter at container-HttpHandleren har behandlet hele HTTP-forespørgslen, returnerer den kontrollen til HttpModulet, som fortsætter med at sende den behandlede HTTP-anmodningsinformation lag for lag, indtil den returneres til klienten.
Et eksempel
Projektstruktur
MyHttpModule-kode
Registrer et brugerdefineret HttpModule i web.config
Gennemse side Default.aspx
Så hvad er rækkefølgen for udførelsen af en række begivenheder i livscyklussen?
Gennemse resultaterne
Brug HttpModule til at afslutte HTTP-forespørgslen
udfald
resumé
Her introducerer vi det vigtigste interface i asp.net livscyklus, IHttpModule, som kan beskrives som et eventinterface, fordi i Init-metoden i implementeringsklassen kan forskellige hændelser i livscyklussen registreres, og forskellig logik kan defineres i hændelsen.
|