Skrivet framtill
När det gäller det relevanta innehållet i IHttpModule blev jag också tillfrågad under intervjun, och jag kände vagt att detta gränssnitt har en Init-metod, som kan registrera en serie händelser med Init-metoden i implementeringskursen. Hemma i helgen finns det egentligen inget att göra, även om det bara är att kontrollera och fylla i luckorna i denna kunskap.
IHttpModule fungerar
Vänner som är bekanta med asp.net livscykel bör veta att exekveringen av HttpModule sker före HttpHandler, och efter att en serie händelser i HttpModule har körts, sedan körs HttpHandler och därefter vissa händelser i HttpModule. För detaljer, se följande livscykeldiagram.
HttpHandler är platsen för att hantera HTTP-förfrågan, HttpModule är det "enda sättet" för en HTTP-förfrågan, så du kan lägga till nödvändig information ovanpå HTTP-förfrågan innan denna HTTP-förfrågan skickas till det verkliga förfrågningscentret (HttpHandler), eller göra ytterligare arbete med den avlyssnade HTTP-förfrågan. Eller i vissa fall helt enkelt avsluta HTTP-förfrågningar som uppfyller vissa villkor, vilket kan fungera som ett filter.
En HTTP-förfrågan kommer att skickas till HttpHandler-containern vid någon punkt (ResolveRequestCache-händelsen) under leveransen av HttpModule-containern. Efter denna händelse skapar HttpModule-containern en ingressinstans av HttpHandler, men istället för att ge upp kontrollen över HTTP-begäran fortsätter den att avfyra AcquireRequestState- och PreRequestHandlerExcute-händelserna. Efter PreRequestHandlerExcute-händelsen ger HttpModule-fönstret tillfälligt kontroll till HttpHandler-containern för verklig HTTP-förfrågningshantering.
Inuti HttpHandler-containern körs metoden ProcessRequest för att hantera HTTP-förfrågningar. Efter att container-HttpHandlern bearbetat hela HTTP-förfrågan återlämnar den kontrollen till HttpModule, som fortsätter att skicka den bearbetade HTTP-förfrågan-informationsflödet lager för lager tills den returneras till klienten.
Ett exempel
Projektstruktur
MyHttpModule-kod
Registrera en anpassad HttpModule i web.config
Bläddra bland sidan Default.aspx
Så vad är ordningen för utförandet av en serie händelser i livscykeln?
Bläddra bland resultaten
Använd HttpModule för att avsluta Http-förfrågan
utfall
sammanfattning
Här introducerar vi det viktigaste gränssnittet i asp.net livscykel, IHttpModule, som kan beskrivas som ett händelsegränssnitt, eftersom i Init-metoden i implementationsklassen kan olika händelser i livscykeln registreras och olika logiker kan definieras i händelsen.
|