ASP.NET頁面執行機制以及請求處理流程
IIS處理頁面的執行機制:
IIS自身是不能處理像ASPX副檔名這樣的頁面,只能直接請求像HTML這樣的靜態檔案,之所以能處理ASPX這樣副檔名的頁面,是因為IIS有一個ISAPI過濾器,它是一個COM元件。ASP.NET服務在註冊到IIS的時候,就會新增一個Win32的擴充套件動態庫aspnet_isapi.dll。並將擴充套件可以處理的頁面副檔名(如ASPX)註冊到IIS裡面。擴充套件啟動後,就根據定義好的方式來處理IIS所不能處理的頁面。
當客戶端請求一個伺服器資源時,這個HTTP請求會被inetinfo.exe程式截獲(www服務),然後Check請求資源的型別,並依據資源對映資訊(儲存在IIS元庫中,一種IIS專用的配置資料庫)將請求的資源分配給特定的處理程式模組。若請求的是靜態資源(img,text,html等)則由IIS處理(IIS在本地Web Server上訪問請求的檔案),將內容輸出到控制檯,發出請求的瀏覽器就能接收到它了。若需要在伺服器端處理的請求,則會被傳到已註冊的擴充套件模組中,aspx請求會被分配給aspnet_isapi.dll,讓這個程式開始處理程式碼,生成標準的HTML程式碼,然後將這些HTML加入到原有的HTML中,最後把完整的HTML返回給IIS,IIS再把內容傳送到客戶瀏覽器。
ASP.NET FrameWork對請求的處理:
上面說到IIS將像ASPX這樣的頁面分配給aspnet_isapi.dll,接著處理如下:
1、aspnet_isapi.dll則會通過一個Http PipeLine的管道將這個Http請求發給w3wp.exe(iis 工作者程式,IIS6.0中叫做 w3wq.exe,IIS5.0中叫做 aspnet_wp.exe),之後asp.net framework就會通過HttpRuntime來處理這個Http請求。
2、HttpRuntime首先會確定處理該請求的類名,HttpRuntime通過公共介面IHttpHandler來呼叫該類獲取被請求資源的類的例項。
3、呼叫HttpRuntime.ProcessRequest開始處理要傳送到瀏覽器的頁面,具體說就是建立一個HttpContext例項,它封裝了所有與請求有關的http特有的資訊,並初始化一個Write物件用於快取標記程式碼。
4、HttpRuntime使用上下文資訊查詢或新建能處理該請求的WEB應用程式的物件。由HttpApplication Factory負責返回HttpApplication例項。
5、HttpApplication例項會讀取web.config中所有HttpModule的配置。
5、HttpApplication物件使用IHttpHandlerFactory型別的例項返回HttpHandler(http處理程式)給HttpRuntime物件。一個頁面只是個http處理程式物件。
6、最後由HttpRuntime物件呼叫IHttpHandler的頁面物件的ProcessRequest方法。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-609510/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ASP.Net請求處理機制初步探索之旅(5):ASP.Net MVC請求處理流程ASP.NETMVC
- 自定義處理頁面請求
- 【永春】Asp.Net頁面執行流程分析ASP.NET
- ASP.Net請求處理機制初步探索之旅(3):管道ASP.NET
- ASP.Net請求處理機制初步探索之旅(2)核心ASP.NET
- ASP.Net請求處理機制初步探索之旅(1):前奏ASP.NET
- ASP.Net請求處理機制初步探索之旅(4):WebForm頁面生命週期ASP.NETWebORM
- Mongodb請求處理流程MongoDB
- 圖解 Spring:HTTP 請求的處理流程與機制【1】圖解SpringHTTP
- SpringMVC請求處理流程SpringMVC
- nginx處理http請求流程NginxHTTP
- 深入dwr2之三 Dwr2頁面請求處理機制分析之engine.jsJS
- 通過重建Hosting系統理解HTTP請求在ASP.NET Core管道中的處理流程[中]:管道如何處理請求...HTTPASP.NET
- Nginx請求處理流程你瞭解嗎?Nginx
- 【轉】批處理命令請求以管理員身份執行
- Asp.Net 異常處理機制ASP.NET
- ASP.NET Core的全域性攔截器(在頁面回發時,如果判斷當前請求不合法,不執行OnPost處理器)ASP.NET
- 多執行緒應用–Http請求阻塞回撥處理執行緒HTTP
- 多執行緒應用--Http請求阻塞回撥處理執行緒HTTP
- WebForm 頁面ajax 請求後臺頁面 方法WebORM
- Spring MVC 處理一個請求的流程分析SpringMVC
- Spring MVC框架處理Web請求的基本流程SpringMVC框架Web
- Tomcat 第四篇:請求處理流程(上)Tomcat
- SpringMVC底層——請求引數處理流程描述SpringMVC
- Java Struts2 的請求處理流程詳解Java
- Tomcat總體架構,啟動流程與處理請求流程Tomcat架構
- Scrapy原始碼閱讀分析_4_請求處理流程原始碼
- 淺談如何在專案中處理頁面中的多個網路請求
- 請求資料處理
- wordpress 處理 ajax 請求
- .NET處理HTTP請求HTTP
- 處理REST SOE請求REST
- asp.net core啟動原始碼以及監聽,到處理請求響應的過程ASP.NET原始碼
- tomcat連線處理機制和執行緒模型Tomcat執行緒模型
- 頁面渲染機制
- Tomcat如何使用執行緒池處理遠端併發請求Tomcat執行緒
- DRF之請求執行流程和APIView原始碼分析APIView原始碼
- 【面試】Web 頁面請求歷程面試Web