請求處理管道

請求管道是一些用于處理HTTP請求的模塊組合,在ASP.NET中,請求管道有兩個核心組件:IHttpModuleIHttpHandler。所有的HTTP請求都會進(jìn)入IHttpHandler,有IHttpHandler進(jìn)行最終的處理,而IHttpModule通過訂閱HttpApplication對象中的事件,可以在IHttpHandler對HTTP請求進(jìn)行處理之前對請求進(jìn)行預(yù)處理或IHttpHandler對HTTP請求處理之后進(jìn)行再次處理。

在IIS7之前,如IIS6或IIS5,請求處理管道分為兩個:IIS請求處理管道和ASP.NET管道,若客戶端請求靜態(tài)資源則只有IIS管道進(jìn)行處理,而ASP.NET管道不會處理該請求。從IIS7開始兩個管道合二為一,稱為集成管道。


上圖中主要描述ASP.NET運(yùn)行時(shí)對HTTP請求的處理且不涉及太多細(xì)節(jié)。

HttpApplication與HttpModule

HTTP請求由ASP.NET運(yùn)行時(shí)接管之后,HttpRuntime會利用HttpApplicationFactory創(chuàng)建或從HttpApplication對象池(.NET中類似的機(jī)制有線程池和字符串拘留池)中取出一個HttpApplication對象,同時(shí)ASP.NET會根據(jù)配置文件來初始化注冊的HttpModule,HttpModule在初始化時(shí)會訂閱HttpApplication中的事件來實(shí)現(xiàn)對HTTP請求的處理。

在ASP.NET MVC5中,Global.asax文件中定義了<

網(wǎng)友評論