asp.net頁面的請求處理響應的流程說明

來源:互聯網
上載者:User

標籤:style   http   io   使用   檔案   sp   on   c   工作   

概述

       本篇部落格從IIS到asp.net頁面後台運行完,整個過程做一個簡單的描述,如果有不對的地方,望指出。

IIS處理請求的過程

        我們通過瀏覽器(Socket用戶端)訪問一個IIS伺服器上的網頁時,該請求到達IIS伺服器上後,IIS的http.sys(分發器)組件就會根據相應的判斷,將其交給對應的應用程式集區(IIS上都有相應的註冊資訊),對應的應用程式集區接收到請求後,會將其交給相應的背景工作處理序進行處理,背景工作處理序接到請求後,根據請求檔案的尾碼名,進行判斷,如果此檔案IIS可以處理,則直接處理,如果處理不了,就從其註冊的外掛程式設定檔中尋找可以處理該請求的外掛程式(asp.net_isapi.dll,也可以是php等等外掛程式),並將其交給該外掛程式(代理),然後,外掛程式就把請求交給真正的處理常式。

瀏覽器

       從程式的角度上說,瀏覽器就是一個Socket用戶端,而IIS就是一個Socket伺服器,從而來實現通訊的功能。對於上述,我們可以使用Telnet(Socket用戶端,win內建安裝程式,需要自己安裝)來進行驗證,cmd中輸入telnet 127.0.0.1 80,就可以串連到伺服器,然後發出請求,就會得到相應的回應,

asp.net_isapi.dll外掛程式

       IIS的外掛程式機制,使得IIS可以服務於任何語言的網站,只要其在IIS上註冊相應的外掛程式,那麼,IIS就可以處理這類檔案的請求,如,你想通過IIS進行php的服務,只要註冊上php的外掛程式就可以了,這個思想非常的厲害,使IIS的擴充性得到大大的提高,當然,這個外掛程式並不是正真處理請求的程式,而是一個代理,通過這個代理(註冊時寫在IIS設定檔的內容)就可以讓IIS知道自己可以處理這類檔案,並且,通過這個代理,可以將這個請求交給正真的程式去處理,當然,返回的結果也是通過這個進行返回的。

        我們可以在IIS伺服器上,查看處理常式映射中查看其可以處理的檔案。如果你是先安裝的VS,後安裝的IIS的話,此時,如果你想讓你的IIS可以處理asp.net的相應檔案,需要我們手動的將asp.net_isapi.dll註冊到IIS中,操作:cmd—》目錄定位到安裝在原生具體版本的.net framework目錄(裡面有aspnet_regiis.exe程式)—運行aspnet_regiis.exe -i

.net framework的HTTP管道機制

        asp.net_ispai.dall接受到請求後,將其交給.net framework,然後就開始進行http的管道機制了

        .net framework接到請求,執行個體化HttpRuntime對象,並調用ProcessRequest方法,然後就是通過HttpApplicationFacotry執行個體化Application對象,在執行個體化的過程中會繼續執行個體化話httpContext、HttpRequest、HttpResponse、Module等等,然後最後執行個體化IHttpHandler介面的執行個體。

        如果大家注意的話,我們的asp.net頁面就是IHttpHandler介面的一個實現者,asp.net頁面繼承page類,page類繼承IHttpHandler介面,這樣我們的asp.net頁面就可以訪問上面執行個體化的對象了。另外,Golbal檔案繼承HttpApplication檔案,這樣,我們就可以通過書寫Golbal中的方法,去往Http管道中的事件進行註冊了。

asp.net頁面的生命週期

        執行個體化IHttpHandler介面執行個體,實際就是執行個體化asp.net的頁面,而在執行個體化asp.net頁面的過程,主要經過這幾個事件,初始化,載入,控制項事件,儲存state,渲染,卸載。這裡我們需要知道頁面上控制項事件的執行是在,預渲染前,在load之後,當然,第一次的時候,是不會有控制項事件觸發的,在初始化階段,完成控制項樹的建立和相應屬性的賦值等,所以,在這裡階段時不要對控制項的屬性值進行操作,因為沒有值,載入過程中,我們可以對控制項進行相應的操作,如果想在load之前的話,就在preload中進行操作。

總結

       在用文字描述的過程發現,不描述不知道,一描述的時候,察覺到自己沒有把整個過程仔細想通,然後,經過又一次的查閱資料,才寫出了這些東西,希望對讀者有意,同時也建議讀者去查閱一些別的資料,去加深自己的理解。

asp.net頁面的請求處理響應的流程說明

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.