国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.Net 請求響應流程簡述

2020-01-18 00:32:51
字體:
來源:轉載
供稿:網友

一、瀏覽器請求頁面的簡單流程

當瀏覽器請求靜態頁面時,會發送請求給服務器軟件,服務器軟件直接去找對應的靜態頁面,并返回給瀏覽器。

當瀏覽器請求動態頁面時,服務器軟件收到請求,發現處理不了.aspx文件,就去映射表當中根據后綴名找對應的處理程序(aspnet_isapi.dll),這個處理程序實現了服務器軟件提供的接口,即服務器軟件通過接口調用了這個處理程序當中的方法。aspnet_isapi.dll會將請求轉交給.Net Framework,由它處理動態頁面,創建頁面對象,生成相應報文,響應給瀏覽器。

當服務器接收到瀏覽器的動態頁面請求時,去網站的程序集中找對應的類,通過反射的方式創建類的對象,并運行ProcessRequest方法處理用戶的需求,最后通過Write方法輸出響應數據。

執行Write時,會把數據放入緩存區,頁面執行完畢后一次性返還給瀏覽器。

二、一般處理程序的IHttpHandler接口

服務器接收請求,要創建頁面對象的時候,發現每一個文件都是一個類,它不知道如何去調用方法創建頁面,于是就需要一個中間處理――將頁面類的對象轉成一個接口IHttpHandler類型,然后通過調用接口中的方法來實現處理。

一般處理程序是一個實現了IHttpHandler特殊接口的類,凡是實現了這個接口的類,都能作為一個外部請求的目標程序。

如果被請求的類沒有實現這個接口,在轉換的時候就會出錯,提示沒有實現IHttpHandler接口。所以,一般處理程序里的方法,實際上是實現了IHttpHandler中的方法。

三、一般處理程序細節

IHttpHandler是重要的接口,context封裝了所有瀏覽器發來的請求報文,ProcessRequest方法表示頁面被訪問時調用這個方法里的代碼段,是個入口。Context.Response是對輸出的封裝,ContextType是響應報文中的ContextType值,是響應輸出的方式。

IsReusable是IHttpHandler中的另一個方法,設置頁面是否可以重用,以減少多次訪問時Web服務器的壓力。

四、詳細請求流程 

服務器接收到用戶請求,aspnet_isapi.dll將請求移交給Application Domain,它會間接調用HttpRuntime的靜態方法處理用戶的請求。

首先,分析請求報文,并把請求報文封裝成HttpWorkerRequest對象,之后拆解請求報文,將各個字段封裝位HttpRequest對象(這個對象包含QueryString和Form方法)。

HttpRequest對象和HttpResponse對象等,共同組成了HttpContext對象。

HttpApplicationFactory類查找Application池中有沒有現成可用的HttpApplication對象,如果有就直接拿來用,如果沒有,就創建一個。HttpApplication對象中有ProcessRequest方法,這個方法有HttpContext對象。正好拿剛才的來用。

HttpApplication對象進入請求管道,先后執行19個委托事件,在第8個事件時創建被請求頁面的對象,在第11和12個事件之間執行被創建對象的ProcessRequest方法。

五、WebForm的頁面生命周期

在請求管道的第11個事件執行被創建頁面類的PeocessRequest方法后,會調用BuildControlsTree方法進入頁面的生命周期。

在頁面生命周期中會連續調用一連串的事件,其中一個Render方法會去遍歷整個控件樹,生成對應的HTML代碼,最后組合成為整個頁面的HTML代碼返還給瀏覽器。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沽源县| 崇州市| 汝南县| 东阳市| 利川市| 宜都市| 新乐市| 报价| 进贤县| 永清县| 隆化县| 葫芦岛市| 邓州市| 巴彦县| 都昌县| 高平市| 祁连县| 攀枝花市| 仁化县| 徐水县| 璧山县| 临朐县| 舟曲县| 定边县| 新河县| 平舆县| 襄樊市| 宣威市| 盐源县| 温泉县| 西青区| 石狮市| 恩施市| 安阳县| 宜阳县| 信丰县| 金阳县| 六安市| 沅陵县| 通道| 泊头市|