Skrevet foran
Når det gjelder relevant innhold i IHttpModule, ble jeg også spurt under intervjuet, og jeg følte vagt at dette grensesnittet har en Init-metode, som kan registrere en serie hendelser med Init-metoden i implementeringsklassen. Hjemme denne helgen er det egentlig ingenting å gjøre, selv om det bare er å sjekke og fylle hullene i denne kunnskapen.
IHttpModule fungerer
Venner som er kjent med livssyklusen asp.net bør vite at utførelsen av HttpModule utføres før HttpHandler, og etter at en serie hendelser i HttpModule er utført, deretter HttpHandler er kjørt, og noen hendelser i HttpModule. For detaljer, vennligst se følgende livssyklusdiagram.
HttpHandler er stedet for å håndtere HTTP-forespørselen, HttpModule er den "eneste måten" for en HTTP-forespørsel, så du kan legge til nødvendig informasjon oppå HTTP-forespørselsinformasjonen før denne HTTP-forespørselen sendes til det virkelige forespørselsbehandlingssenteret (HttpHandler), eller gjøre noe ekstra arbeid med den avlyttede HTTP-forespørselsinformasjonen. Eller i noen tilfeller, bare avslutte HTTP-forespørsler som oppfyller visse betingelser, noe som kan fungere som et filter.
En HTTP-forespørsel vil bli sendt til HttpHandler-containeren på et tidspunkt (ResolveRequestCache-hendelsen) under leveringen av HttpModule-containeren. Etter denne hendelsen oppretter HttpModule-containeren en ingress-instans av HttpHandler, men i stedet for å gi fra seg kontrollen over HTTP-forespørselen, fortsetter den å utløse AcquireRequestState- og PreRequestHandlerExcute-hendelsene. Etter PreRequestHandlerExcute-hendelsen gir HttpModule-vinduet midlertidig kontroll til HttpHandler-containeren for reell HTTP-forespørselsbehandling.
Inne i HttpHandler-containeren kjøres ProcessRequest-metoden for å håndtere HTTP-forespørsler. Etter at container-HttpHandler har behandlet hele HTTP-forespørselen, returnerer den kontrollen til HttpModule, som fortsetter å sende den behandlede HTTP-forespørselsinformasjonsflyten lag for lag til den returneres til klienten.
En instans
Prosjektstruktur
MyHttpModule-kode
Registrer en egendefinert HttpModule i web.config
Bla gjennom siden Default.aspx
Så hva er rekkefølgen på gjennomføringen av en rekke hendelser i livssyklusen?
Bla gjennom resultatene
Bruk HttpModule for å avslutte Http-forespørselen
utfall
sammendrag
Her introduserer vi det viktigste grensesnittet i asp.net livssyklus, IHttpModule, som kan beskrives som et hendelsesgrensesnitt, fordi i Init-metoden i implementasjonsklassen kan ulike hendelser i livssyklusen registreres, og ulike logikker kan defineres i hendelsen.
|