Написано отпред
Относно релевантното съдържание на IHttpModule, бях попитан и по време на интервюто и слабо почувствах, че този интерфейс има Init метод, който може да регистрира серия от събития с Init метода в курса по имплементация. У дома този уикенд наистина няма какво да се направи, дори и да е да проверим и запълним празнините в това знание.
IHttpModule работи
Приятели, които са запознати с жизнения цикъл asp.net, трябва да знаят, че изпълнението на HttpModule се изпълнява преди HttpHandleler, след като се изпълнява серия от събития на HttpModule, след това се изпълнява HttpHandleler и след това се изпълняват някои събития на HttpModule. За подробности, моля, вижте следната диаграма на жизнения цикъл.
HttpHandler е мястото за обработка на http заявката, HttpModule е "единственият начин" за HTTP заявка, така че можете да добавите необходима информация върху HTTP заявката, преди тази HTTP заявка да бъде предадена към реалния център за обработка на заявки (HttpHandleler), или да свършите допълнителна работа по прихванатите HTTP заявки. Или в някои случаи просто прекратяват HTTP заявки, които отговарят на определени условия, които могат да действат като филтър.
HTTP заявка ще бъде предадена към HttpHandler контейнера в даден момент (събитие ResolveRequestCache) по време на доставката на HttpModule контейнера. След това събитие контейнерът HttpModule създава входяща инстанция на HttpHandleler, но вместо да се откаже от контрола върху HTTP заявката, той продължава да изпълнява събитията AcquireRequestState и PreRequestHandlelerExcute. След събитието PreRequestHandlerExcute, прозорецът HttpModule временно дава контрол на контейнера HttpHandler за реална обработка на HTTP заявки.
Вътре в контейнера HttpHandler се изпълнява методът ProcessRequest, който обработва HTTP заявки. След като контейнерът HttpHandler обработи цялата HTTP заявка, той връща контрола на HttpModule, който продължава да предава информационния поток от обработената HTTP заявка слой по слой, докато не бъде върнат на клиента.
Инстанция
Структура на проекта
MyHttpModule код
Регистрирайте персонализиран HttpModule в web.config
Разгледайте страница Default.aspx
Какъв е редът на изпълнение на поредица от събития в жизнения цикъл?
Разгледайте резултатите
Използвайте HttpModule, за да прекратите Http заявката
Резултат
резюме
Тук представяме най-важния интерфейс в жизнения цикъл на asp.net – IHttpModule, който може да се опише като интерфейс на събития, защото в метода Init в класа на имплементация могат да се регистрират различни събития в жизнения цикъл и да се дефинират различни логически елементи в събитието.
|