新聞中心
每一個(gè)ASP.NET程序執(zhí)行時(shí)都會(huì)對(duì)當(dāng)前URL的請(qǐng)求進(jìn)行解析,本文將分析ASP.NET頁面請(qǐng)求的原理。當(dāng)我們?cè)跒g覽器上輸入一個(gè)URL時(shí), 流程如下:

創(chuàng)新互聯(lián)成立于2013年,先為合陽等服務(wù)建站,合陽等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為合陽企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
首先被WWW服務(wù)器截獲(inetinfo.exe進(jìn)程), 該進(jìn)程首先判斷頁面后綴, 然后根據(jù)IIS中配置決定調(diào)用具體的擴(kuò)展程序。
如aspx就會(huì)調(diào)用aspnet_isapi.dll, 然后由aspnet_isapi.dll發(fā)送給w3wp.exe(iis 工作者進(jìn)程,IIS6.0中叫做 w3wq.exe,IIS5.0中叫做 aspnet_wp.exe).
接下來就是w3wp.exe調(diào)用.net類庫進(jìn)行具體處理,流程如下:
ISAPIRuntime-->HttpRuntime-->HttpApplicationFactory-->HttpApplication-->HttpModule--HttpHandlerFactory-->HttpHandle
1. ISAPIRuntime
主要作用是調(diào)用一些非托管代碼生成HttpWorkerRequest對(duì)象,HttpWorkerRequest對(duì)象包含當(dāng)前請(qǐng)求的所有信息,然后傳遞給HttpRuntime,這里生成的HttpWorkerRequest對(duì)象可以直接在我們的頁面中調(diào)用的,通過它取得原始的請(qǐng)求信息:
2. HttpRuntime
a. 根據(jù)HttpWorkerRequest對(duì)象生成HttpContext,HttpContext包含request、response等屬性;
b. 調(diào)用HttpApplicationFactory來生成IHttpHandler(這里生成的是一個(gè)默認(rèn)的HttpApplication對(duì)象,HttpApplication也是IHttpHandler接口的一個(gè)實(shí)現(xiàn))
c. 調(diào)用HttpApplication對(duì)象執(zhí)行請(qǐng)求
3. HttpApplicationFactory.
主要是生成一個(gè)HttpApplication對(duì)象:
首先會(huì)查看是否存在global.asax文件,如果有的話就用它來生成HttpApplication對(duì)象,從這里我們可以看到global.asax的文件名是在asp.net的框架中寫死的,不能修改的。如果這個(gè)文件不存在就使用默認(rèn)的對(duì)象。
4. HttpApplication
這個(gè)是比較復(fù)雜也比較重要的一個(gè)對(duì)象, 首先是執(zhí)行初始化操作,比較重要的一步就是進(jìn)行HttpModule的初始化:
HttpApplication代表著程序員創(chuàng)建的Web應(yīng)用程序。HttpApplication創(chuàng)建針對(duì)此Http請(qǐng)求的 HttpContext對(duì)象,這些對(duì)象包含了關(guān)于此請(qǐng)求的諸多其他對(duì)象,主要是HttpRequest、HttpResponse、HttpSessionState等。這些對(duì)象在程序中可以通過Page類或者Context類進(jìn)行訪問。
它會(huì)讀取web.config中所有HttpModule的配置
5. HttpModule
6. HttpHandlerFactory
7. HttpHandler
【編輯推薦】
- ASP.NET的錯(cuò)誤處理機(jī)制
- ASP.NET多附件上傳和附件編輯的實(shí)現(xiàn)
- ASP.NET中性能和擴(kuò)展性的秘密
- ASP.NET 3.5圖表控件親密接觸
- 詳解ASP.NET的四種狀態(tài)
分享題目:ASP.NET頁面請(qǐng)求原理淺析
新聞來源:http://m.fisionsoft.com.cn/article/dpedjje.html


咨詢
建站咨詢
