ASP.NET對請求處理過程的操作是怎樣的

本篇內容介紹了“ASP.NET對請求處理過程的操作是怎樣的”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

創(chuàng)新互聯(lián)公司是專業(yè)的蓋州網(wǎng)站建設公司,蓋州接單;提供成都做網(wǎng)站、成都網(wǎng)站設計,網(wǎng)頁設計,網(wǎng)站設計,建網(wǎng)站,PHP網(wǎng)站建設等專業(yè)做網(wǎng)站服務;采用PHP框架,可快速的進行蓋州網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!

當請求一個*.aspx文件的時候,這個請求會被inetinfo.exe進程截獲,它判斷文件的后綴(aspx)之后,將這個請求轉交給 ASPNET_ISAPI.dll,ASPNET_ISAPI.dll會通過http管道(Http PipeLine)將請求發(fā)送給ASPNET_WP.exe進程,在ASPNET_WP.exe進程中通過HttpRuntime來處理這個請求,處理完畢將結果返回客戶端。

inetinfo.exe進程:是www服務的進程,IIS服務和ASPNET_ISAPI.DLL都寄存在此進程中。

ASPNET_ISAPI.DLL:是處理。aspx文件的win32組件。其實IIS服務器是只能識別。html文件的,當IIS服務器發(fā)現(xiàn)被請求的文件是。aspx文件時,IIS服務器將其交給aspnet_isapi.dll來處理。

aspnet_wp.exe進程:ASP.NET框架進程,提供。net運行的托管環(huán)境,。net的CLR(公共語言運行時)就是寄存在此進程中。

ASP.NET Framework處理一個Http Request的流程:

HttpRequest-->inetinfo.exe-->ASPNET_ISAPI.dll-->ASPNET_WP.exe-->HttpRuntime-->HttpApplication Factory-->HttpApplication-->HttpModule-->HttpHandler Factory-->HttpHandler-->HttpHandler.ProcessRequest()

ASP.NET請求處理過程是基于管道模型的,這個管道模型是由多個HttpModule和HttpHandler組成,ASP.NET 把http請求依次傳遞給管道中各個HttpModule,最終被HttpHandler處理,處理完成后,再次經(jīng)過管道中的HTTP模塊,把結果返回給客戶端。我們可以在每個HttpModule中都可以干預請求的處理過程。

注意:在http請求的處理過程中,只能調用一個HttpHandler,但可以調用多個HttpModule。

當請求到達HttpModule的時候,系統(tǒng)還沒有對這個請求真正處理,但是我們可以在這個請求傳遞到處理中心(HttpHandler)之前附加一些其它信息,或者截獲的這個請求并作一些額外的工作,也或者終止請求等。在HttpHandler處理完請求之后,我們可以再在相應的HttpModule中把請求處理的結果進行再次加工返回客戶端。

HttpModule

HTTP模塊是實現(xiàn)了System.Web.IhttpModule接口的類。

IHttpModule接口的聲明:

public interface IHttpModule  {  void Init (HttpApplication context);  void Dispose ();  }

Init 方法:系統(tǒng)初始化的時候自動調用,這個方法允許HTTP模塊向HttpApplication 對象中的事件注冊自己的事件處理程序。

Dispose方法: 這個方法給予HTTP模塊在對象被垃圾收集之前執(zhí)行清理的機會。此方法一般無需編寫代碼。

HTTP模塊可以向System.Web.HttpApplication對象注冊下面一系列事件:

AcquireRequestState 當ASP.NET運行時準備好接收當前HTTP請求的對話狀態(tài)的時候引發(fā)這個事件。

AuthenticateRequest 當ASP.NET 運行時準備驗證用戶身份的時候引發(fā)這個事件。

AuthorizeRequest 當ASP.NET運行時準備授權用戶訪問資源的時候引發(fā)這個事件。

BeginRequest 當ASP.NET運行時接收到新的HTTP請求的時候引發(fā)這個事件。

Disposed 當ASP.NET完成HTTP請求的處理過程時引發(fā)這個事件。

EndRequest 把響應內容發(fā)送到客戶端之前引發(fā)這個事件。

Error 在處理HTTP請求的過程中出現(xiàn)未處理異常的時候引發(fā)這個事件。

PostRequestHandlerExecute 在HTTP處理程序結束執(zhí)行的時候引發(fā)這個事件。

PreRequestHandlerExecute 在ASP.NET開始執(zhí)行HTTP請求的處理程序之前引發(fā)這個事件。在這個事件之后,ASP.NET 把該請求轉發(fā)給適當?shù)腍TTP處理程序。

PreSendRequestContent 在ASP.NET把響應內容發(fā)送到客戶端之前引發(fā)這個事件。這個事件允許我們在內容到達客戶端之前改變響應內容。我們可以使用這個事件給頁面輸出添加用于所有頁面的內容。例如通用菜單、頭信息或腳信息。

PreSendRequestHeaders 在ASP.NET把HTTP響應頭信息發(fā)送給客戶端之前引發(fā)這個事件。在頭信息到達客戶端之前,這個事件允許我們改變它的內容。我們可以使用這個事件在頭信息中添加cookie和自定義數(shù)據(jù)。

ReleaseRequestState 當ASP.NET結束所搜有的請求處理程序執(zhí)行的時候引發(fā)這個事件。

ResolveRequestCache 我們引發(fā)這個事件來決定是否可以使用從輸出緩沖返回的內容來結束請求。這依賴于Web應用程序的輸出緩沖時怎樣設置的。

UpdateRequestCache 當ASP.NET完成了當前的HTTP請求的處理,并且輸出內容已經(jīng)準備好添加給輸出緩沖的時候,引發(fā)這個事件。這依賴于Web應用程序的輸出緩沖是如何設置的。

“ASP.NET對請求處理過程的操作是怎樣的”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質量的實用文章!

網(wǎng)站標題:ASP.NET對請求處理過程的操作是怎樣的
標題來源:http://bm7419.com/article32/geehpc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設計公司、外貿建站全網(wǎng)營銷推廣、用戶體驗、商城網(wǎng)站、品牌網(wǎng)站設計

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設