自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ASP.NET對請求處理過程的操作與分析

開發(fā) 后端
ASP.NET請求處理過程是基于管道模型的,在模型中ASP.NET把http請求傳遞給管道中的所有模塊。每個模塊都接收http請求并有完全控制權(quán)限。本文就ASP.NET開發(fā)語言對請求處理過程進(jìn)行詳細(xì)分析,希望能對各位讀者起到或多或少的幫助。

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

  inetinfo.exe進(jìn)程:是www服務(wù)的進(jìn)程,IIS服務(wù)和ASPNET_ISAPI.DLL都寄存在此進(jìn)程中。

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

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

  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模塊,把結(jié)果返回給客戶端。我們可以在每個HttpModule中都可以干預(yù)請求的處理過程。

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

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

  HttpModule

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

  IHttpModule接口的聲明:

  1. public interface IHttpModule  
  2. {  
  3. void Init (HttpApplication context);  
  4. void Dispose ();  

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

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

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

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

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

  AuthorizeRequest 當(dāng)ASP.NET運(yùn)行時準(zhǔn)備授權(quán)用戶訪問資源的時候引發(fā)這個事件。

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

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

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

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

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

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

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

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

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

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

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

【編輯推薦】

  1. IIS6的ASP.NET ISAPI請求處理過程
  2. IIS5、IIS6、IIS7的ASP.net請求處理過程比較
  3. 13.1.1 IIS 5.0中的ASP.NET請求處理過程
  4. 13.1.2 IIS 6.0中的ASP.NET請求處理過程
  5. 13.1.3 IIS 7.0中的ASP.NET請求處理過程
責(zé)任編輯:韓亞珊 來源: 中國IT實(shí)驗室
相關(guān)推薦

2009-07-24 10:57:41

ASP.NET ISAIIS6

2011-04-13 15:50:49

.htmHTTP請求處理

2009-10-15 14:50:34

ASP.NET Rou

2009-07-29 17:29:46

ASP與ASP.NET

2010-07-22 09:13:00

ASP.NET

2009-07-27 13:25:15

Postback程序處ASP.NET

2011-02-21 13:26:47

Postfix郵件處理

2009-07-20 17:49:07

JSF請求處理

2009-07-20 13:14:25

安裝ASP.NET A

2009-03-13 10:58:48

ASP.NetMVC框架編程

2009-07-20 16:04:37

ASP.NET fra

2009-07-30 13:28:55

ASP.NET中的ja

2009-08-14 17:57:43

ASP.NET MVC

2009-07-28 15:29:03

實(shí)現(xiàn)HTTP請求ASP.NET

2009-07-24 09:02:24

ASP.Net RSA

2009-07-27 13:46:48

ASP.NET編程日期與時間的處理

2009-07-24 15:47:35

ASP.NET與ASP

2010-05-06 13:33:47

Asp.Net負(fù)載均衡

2009-03-11 11:46:11

JSPASP.NET存儲過程

2009-02-06 14:11:36

ASP.NET.NET全局異常處理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號