程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 淺談ASP.NET的內部機制(二)

淺談ASP.NET的內部機制(二)

編輯:關於ASP.NET

前言:大家知不知道,一個Http Request是如何被傳遞給ASP.NET的?而且ASP.NET是如何知道一個 Http Request是請求的.aspx這樣的動態文件還是請求的.htm這樣的靜態文件?......

上次已經說到了http.sys和aspnet_filter的功能,希望大家還記得!

當一個請求(也就是http Request)通過了http.sys和aspnet_fitler後,此時這個請求還沒有被傳遞 給ASP.NET的處理程序。但是此時IIS就會在它的MIME Type中查找請求文件的處理程序。

其實MIME Type不神秘,就是注冊了哪些文件由哪些組件來處理。大家看看下面的圖就明白了。

大家應該對上面的圖很熟悉。而IIS就是通過查找上面的那個表來決定一個請求到底請求的是那種文件 ,如果是靜態的文件,如htm,那麼這個請求就直接由IIS來處理了,也不會傳遞給ASP.NET處理程序。如 果請求的文件是.aspx或者.asmx等,那麼IIS就知道請求是就傳遞給aspnet_isapi.dll的,隨後就啟動一個 進程來加載這個dll,隨後就開始進行一系列的初始化工作,然後就把請求傳遞給ASP.NET。

下面我們就來詳細的看看,在真正處理一個請求的時候,到底進行了哪些的初始化操作。

1.當IIS知道了處理的是.aspx的文件後,就啟動一個進程w3wp.exe來開始運行ASP.NET。

2.因為此時aspnet_isapi.dll已經加載運行了,而且aspnet_isapi.dll是一個用托管代碼編寫的組件 ,而所有的托管代碼都要運行在應用程序域(Application Domain,以後我們簡稱Domain)中,所以進行加 載後,首先就是建立一個Domain。因為我們請求的是一個ASP.NET中的一個頁面,而且這個頁面是屬於一 個用ASP.NET開發的網站,所以這個網站就是一個應用程序,要在Domain中運行的。但是建立一個Domain 要經過很多的步驟的。(注:大家也許認為沒有必要把建立Domain的步驟弄清楚,但是我認為很有必要, 因為在建立一個Domain的過程中,涉及到很多的ASP.NET的內部問題,而且這個問題在實際開發中也很重 要,如ASP.NET運行時的權限和可信域(與安全問題相關),也涉及代碼安全等,還可以幫助我們理解代碼 的編譯).

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved