Uzrakstīts priekšā
Attiecībā uz attiecīgo IHttpModule saturu man tika jautāts arī intervijas laikā, un es neskaidri jutu, ka šai saskarnei ir Init metode, kas var reģistrēt virkni notikumu ar Init metodi ieviešanas klasē. Mājās šajā nedēļas nogalē patiešām nav ko darīt, pat ja tas ir pārbaudīt un aizpildīt nepilnības šajās zināšanās.
IHttpModule darbojas
Draugiem, kuri pārzina asp.net dzīves ciklu, jāzina, ka HttpModule izpilde tiek izpildīta pirms HttpHandler un pēc HttpModule notikumu sērijas izpildes, pēc tam HttpHandler izpildes un pēc tam dažu HttpModule notikumu izpildes. Detalizētu informāciju skatiet tālāk esošajā dzīves cikla diagrammā.
HttpHandler ir vieta, kur apstrādāt http pieprasījumu, HttpModule ir "vienīgais veids" HTTP pieprasījumam, tāpēc jūs varat pievienot nepieciešamo informāciju virs HTTP pieprasījuma informācijas, pirms šis HTTP pieprasījums tiek nodots reālajam pieprasījumu apstrādes centram (HttpHandler), vai veikt papildu darbu ar pārtverto HTTP pieprasījuma informāciju. Vai dažos gadījumos vienkārši pārtrauciet HTTP pieprasījumus, kas atbilst dažiem nosacījumiem, kas var darboties kā filtrs.
HTTP pieprasījums tiks nodots HttpHandler konteineram kādā brīdī (notikums ResolveRequestCache) HttpModule konteinera piegādes laikā. Pēc šī notikuma HttpModule konteiners izveido HttpHandler ieejas instanci, bet tā vietā, lai atteiktos no HTTP pieprasījuma kontroles, tas turpina aktivizēt notikumus AcquireRequestState un PreRequestHandlerExcute. Pēc notikuma PreRequestHandlerExcute HttpModule logs īslaicīgi piešķir kontroli HttpHandler konteineram reālai HTTP pieprasījuma apstrādei.
HttpHandler konteinerā tiek izpildīta metode ProcessRequest, lai apstrādātu HTTP pieprasījumus. Pēc tam, kad konteiners HttpHandler apstrādā visu HTTP pieprasījumu, tas atgriež kontroli HttpModule, kas turpina nodot apstrādāto HTTP pieprasījuma informācijas plūsmu slāni pa slānim, līdz tas tiek atgriezts klientam.
Piemērs
Projekta struktūra
MyHttpModule kods
Pielāgota HttpModule reģistrēšana vietnē web.config
Pārlūkot lapu Default.aspx
Tātad, kāda ir notikumu sērijas izpildes kārtība dzīves ciklā?
Pārlūkojiet rezultātus
HttpModule izmantošana, lai pārtrauktu Http pieprasījumu
Rezultātu
Kopsavilkuma
Šeit mēs iepazīstinām ar vissvarīgāko saskarni asp.net dzīves ciklā, IHttpModule, ko var raksturot kā notikumu interfeisu, jo Init metodē ieviešanas klasē var reģistrēt dažādus dzīves cikla notikumus, un notikumā var definēt dažādu loģiku.
|