Ees kirjutatud
IHttpModule'i asjakohase sisu kohta küsiti minult intervjuul samuti ning tundsin ähmaselt, et sellel liidesel on Init meetod, mis suudab registreerida sündmuste seeria Init meetodiga rakendusklassis. Kodus sel nädalavahetusel pole tegelikult midagi teha, isegi kui see on selle teadmise lünkade täitmine ja kontrollimine.
IHttpModule töötab
Sõbrad, kes tunnevad asp.net elutsüklit, peaksid teadma, et HttpModule'i täitmine toimub enne HttpHandlerit ning pärast HttpModule'i sündmuste seeria käivitamist, seejärel HttpHandleri käivitamist ja lõpuks mõnede HttpModule'i sündmuste käivitamist. Lisateabe saamiseks vaadake palun järgmist elutsükli skeemi.
HttpHandler on koht, kus töödeldakse HTTP-päringut, HttpModule on "ainus viis" HTTP päringu jaoks, nii et saad lisada vajalikku teavet HTTP päringu info peale enne, kui see HTTP päringu edastatakse päris päringute töötlemiskeskusesse (HttpHandler), või teha lisatööd pealtkuulatud HTTP päringu info kallal. Või mõnel juhul lihtsalt lõpetada HTTP-päringud, mis vastavad teatud tingimustele, mis võivad toimida filtrina.
HTTP-päring edastatakse mingil hetkel HttpHandleri konteinerisse (ResolveRequestCache sündmus) HttpModule'i konteineri kohaletoimetamise ajal. Pärast seda sündmust loob HttpModule'i konteiner HttpHandleri sisenemiseksemplari, kuid selle asemel, et loovutada HTTP päringu kontroll, jätkab ta AcquireRequestState ja PreRequestHandlerExcute sündmuste käivitamist. Pärast PreRequestHandlerExcute sündmust annab HttpModule aken ajutiselt kontrolli HttpHandler konteinerile päris HTTP päringute töötlemiseks.
HttpHandleri konteineri sees käivitatakse HTTP-päringute haldamiseks ProcessRequest meetod. Pärast seda, kui konteiner HttpHandler töötleb kogu HTTP päringu, tagastab ta kontrolli HttpModule'ile, kes edastab töödeldud HTTP päringu info voogu kihthaaval, kuni see tagastatakse kliendile.
Näide
Projekti struktuur
MyHttpModule kood
Registreeri kohandatud HttpModule web.config lehel
Sirvi lehte Default.aspx
Milline on siis sündmuste järjestus elutsükli jooksul?
Sirvi tulemusi
Kasuta HttpModule'i, et lõpetada Http-päring
tulemus
Kokkuvõte
Siin tutvustame asp.net elutsükli kõige olulisemat liidest, IHttpModule'i, mida saab kirjeldada kui sündmuste liidest, sest rakendusklassi Init meetodis saab elutsükli erinevaid sündmusi registreerida ja sündmuses määratleda erinevaid loogikameetodeid.
|