新聞中心
當(dāng)請(qǐng)求一個(gè)*.aspx文件的時(shí)候,這個(gè)請(qǐng)求會(huì)被inetinfo.exe進(jìn)程截獲,它判斷文件的后綴(aspx)之后,將這個(gè)請(qǐng)求轉(zhuǎn)交給 ASPNET_ISAPI.dll,ASPNET_ISAPI.dll會(huì)通過http管道(Http PipeLine)將請(qǐng)求發(fā)送給ASPNET_WP.exe進(jìn)程,在ASPNET_WP.exe進(jìn)程中通過HttpRuntime來處理這個(gè)請(qǐng)求,處理完畢將結(jié)果返回客戶端。

公司主營業(yè)務(wù):成都做網(wǎng)站、網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出潞州免費(fèi)做網(wǎng)站回饋大家。
inetinfo.exe進(jìn)程:是www服務(wù)的進(jìn)程,IIS服務(wù)和ASPNET_ISAPI.DLL都寄存在此進(jìn)程中。
ASPNET_ISAPI.DLL:是處理。aspx文件的win32組件。其實(shí)IIS服務(wù)器是只能識(shí)別。html文件的,當(dāng)IIS服務(wù)器發(fā)現(xiàn)被請(qǐng)求的文件是。aspx文件時(shí),IIS服務(wù)器將其交給aspnet_isapi.dll來處理。
aspnet_wp.exe進(jìn)程:ASP.NET框架進(jìn)程,提供。net運(yùn)行的托管環(huán)境,。net的CLR(公共語言運(yùn)行時(shí))就是寄存在此進(jìn)程中。
ASP.NET Framework處理一個(gè)Http Request的流程:
HttpRequest-->inetinfo.exe-->ASPNET_ISAPI.dll-->ASPNET_WP.exe-->HttpRuntime-->HttpApplication Factory-->HttpApplication-->HttpModule-->HttpHandler Factory-->HttpHandler-->HttpHandler.ProcessRequest()
ASP.NET請(qǐng)求處理過程是基于管道模型的,這個(gè)管道模型是由多個(gè)HttpModule和HttpHandler組成,ASP.NET 把http請(qǐng)求依次傳遞給管道中各個(gè)HttpModule,最終被HttpHandler處理,處理完成后,再次經(jīng)過管道中的HTTP模塊,把結(jié)果返回給客戶端。我們可以在每個(gè)HttpModule中都可以干預(yù)請(qǐng)求的處理過程。
注意:在http請(qǐng)求的處理過程中,只能調(diào)用一個(gè)HttpHandler,但可以調(diào)用多個(gè)HttpModule。
當(dāng)請(qǐng)求到達(dá)HttpModule的時(shí)候,系統(tǒng)還沒有對(duì)這個(gè)請(qǐng)求真正處理,但是我們可以在這個(gè)請(qǐng)求傳遞到處理中心(HttpHandler)之前附加一些其它信息,或者截獲的這個(gè)請(qǐng)求并作一些額外的工作,也或者終止請(qǐng)求等。在HttpHandler處理完請(qǐng)求之后,我們可以再在相應(yīng)的HttpModule中把請(qǐng)求處理的結(jié)果進(jìn)行再次加工返回客戶端。
HttpModule
HTTP模塊是實(shí)現(xiàn)了System.Web.IhttpModule接口的類。
IHttpModule接口的聲明:
- public interface IHttpModule
- {
- void Init (HttpApplication context);
- void Dispose ();
- }
Init 方法:系統(tǒng)初始化的時(shí)候自動(dòng)調(diào)用,這個(gè)方法允許HTTP模塊向HttpApplication 對(duì)象中的事件注冊(cè)自己的事件處理程序。
Dispose方法: 這個(gè)方法給予HTTP模塊在對(duì)象被垃圾收集之前執(zhí)行清理的機(jī)會(huì)。此方法一般無需編寫代碼。
HTTP模塊可以向System.Web.HttpApplication對(duì)象注冊(cè)下面一系列事件:
AcquireRequestState 當(dāng)ASP.NET運(yùn)行時(shí)準(zhǔn)備好接收當(dāng)前HTTP請(qǐng)求的對(duì)話狀態(tài)的時(shí)候引發(fā)這個(gè)事件。
AuthenticateRequest 當(dāng)ASP.NET 運(yùn)行時(shí)準(zhǔn)備驗(yàn)證用戶身份的時(shí)候引發(fā)這個(gè)事件。
AuthorizeRequest 當(dāng)ASP.NET運(yùn)行時(shí)準(zhǔn)備授權(quán)用戶訪問資源的時(shí)候引發(fā)這個(gè)事件。
BeginRequest 當(dāng)ASP.NET運(yùn)行時(shí)接收到新的HTTP請(qǐng)求的時(shí)候引發(fā)這個(gè)事件。
Disposed 當(dāng)ASP.NET完成HTTP請(qǐng)求的處理過程時(shí)引發(fā)這個(gè)事件。
EndRequest 把響應(yīng)內(nèi)容發(fā)送到客戶端之前引發(fā)這個(gè)事件。
Error 在處理HTTP請(qǐng)求的過程中出現(xiàn)未處理異常的時(shí)候引發(fā)這個(gè)事件。
PostRequestHandlerExecute 在HTTP處理程序結(jié)束執(zhí)行的時(shí)候引發(fā)這個(gè)事件。
PreRequestHandlerExecute 在ASP.NET開始執(zhí)行HTTP請(qǐng)求的處理程序之前引發(fā)這個(gè)事件。在這個(gè)事件之后,ASP.NET 把該請(qǐng)求轉(zhuǎn)發(fā)給適當(dāng)?shù)腍TTP處理程序。
PreSendRequestContent 在ASP.NET把響應(yīng)內(nèi)容發(fā)送到客戶端之前引發(fā)這個(gè)事件。這個(gè)事件允許我們?cè)趦?nèi)容到達(dá)客戶端之前改變響應(yīng)內(nèi)容。我們可以使用這個(gè)事件給頁面輸出添加用于所有頁面的內(nèi)容。例如通用菜單、頭信息或腳信息。
PreSendRequestHeaders 在ASP.NET把HTTP響應(yīng)頭信息發(fā)送給客戶端之前引發(fā)這個(gè)事件。在頭信息到達(dá)客戶端之前,這個(gè)事件允許我們改變它的內(nèi)容。我們可以使用這個(gè)事件在頭信息中添加cookie和自定義數(shù)據(jù)。
ReleaseRequestState 當(dāng)ASP.NET結(jié)束所搜有的請(qǐng)求處理程序執(zhí)行的時(shí)候引發(fā)這個(gè)事件。
ResolveRequestCache 我們引發(fā)這個(gè)事件來決定是否可以使用從輸出緩沖返回的內(nèi)容來結(jié)束請(qǐng)求。這依賴于Web應(yīng)用程序的輸出緩沖時(shí)怎樣設(shè)置的。
UpdateRequestCache 當(dāng)ASP.NET完成了當(dāng)前的HTTP請(qǐng)求的處理,并且輸出內(nèi)容已經(jīng)準(zhǔn)備好添加給輸出緩沖的時(shí)候,引發(fā)這個(gè)事件。這依賴于Web應(yīng)用程序的輸出緩沖是如何設(shè)置的。
網(wǎng)站標(biāo)題:ASP.NET對(duì)請(qǐng)求處理過程的操作與分析
URL網(wǎng)址:http://www.5511xx.com/article/ccopese.html


咨詢
建站咨詢
