ASP.NET 請求處理完整過程

來源:互聯網
上載者:User

標籤:style   http   color   io   os   ar   for   strong   檔案   

請求過程

1.用戶端發送請求給伺服器端。

2.首先由伺服器端的HTTP.SYS核心模組接受,根據連接埠分發給IIS(或者其他web伺服器軟體)。

3.IIS(由一個軟體進程,一個w3svc服務組成)接收到請求後,會根據連接埠分發給指定的背景工作處理序

4.背景工作處理序會對所請求的檔案的副檔名進行檢查,交給對應的擴充程式處理。(如 .aspx、.ascx、.ashx 和 .asmx則交給aspnet_isapi.dll擴充程式)

5.當請求為.aspx時,擴充程式會交給ASPNetRuntime託管環境調用ISAPIRuntime.ProcessRequest(IntPtr ecb)方法,(ecb就是請求的控制代碼。控制代碼就是作業系統對一個資源的標識)。

6.ISAPIRuntime的PR方法中 把請求封裝成HttpWorkRequest對象 然後調用HttpRuntime.pr方法。

7.在HttpRuntime的PR方法中,把HttpWorkRequest對象封裝成HttpContext對象。然後通過HttpApplicationFactory生產一個HttpApplication對象出來。

8.HttpApplication對象會拿著這個HttpContext對象走管線處理請求。

9.在管線請求中,第7和8事件中預設會根據請求執行個體化實現IHttpHandle的對象A。第11,12事件中,會調用A的PR方法。

10.如果A是一般處理常式,則直接調用PR方法。如果是aspx程式,則會走頁面生命週期過程。

 

頁面生命週期

1.Create Instance 建立所有控制項

2.IsPostBack 確定是不是第一次處理該頁

3.Init 所有控制項都已初始化且已應用所有外觀設定後引發

3.ViewState 載入ViewState設定控制項值

4.Load 執行所有的Load事件

5.ChangeEvent 執行控制項更改的事件

6.Complete 事件

7.PreRender 預呈現頁面,最後更改頁面的機會

8.SaveState 儲存狀態放到頁面中

9.Render 呈現頁面

10.Unload 卸載

 

 

管線事件

    • 對請求進行驗證,將檢查瀏覽器發送的資訊,並確定其是否包含潛在惡意標記。 有關更多資訊,請參見 ValidateRequest 和指令碼侵入概述。

    • 如果已在 Web.config 檔案的 UrlMappingsSection 節中配置了任何 URL,則執行 URL 對應。

    • 引發 BeginRequest 事件。

    • 引發 AuthenticateRequest 事件。

    • 引發 PostAuthenticateRequest 事件。

    • 引發 AuthorizeRequest 事件。

    • 引發 PostAuthorizeRequest 事件。

    • 引發 ResolveRequestCache 事件。

    • 引發 PostResolveRequestCache 事件。

    • 根據所請求資源的副檔名(在應用程式的設定檔中映射),選擇實現 IHttpHandler 的類,對請求進行處理。 如果該請求針對從 Page 類派生的對象(頁),並且需要對該頁進行編譯,則 ASP.NET 會在建立該頁的執行個體之前對其進行編譯。

    • 引發 PostMapRequestHandler 事件。

    • 引發 AcquireRequestState 事件。

    • 引發 PostAcquireRequestState 事件。

    • 引發 PreRequestHandlerExecute 事件。

    • 為該請求調用合適的 IHttpHandler 類的 ProcessRequest 方法(或非同步版 IHttpAsyncHandler.BeginProcessRequest)。 例如,如果該請求針對某頁,則當前的頁執行個體將處理該請求。

    • 引發 PostRequestHandlerExecute 事件。

    • 引發 ReleaseRequestState 事件。

    • 引發 PostReleaseRequestState 事件。

    • 如果定義了 Filter 屬性,則執行響應篩選。

    • 引發 UpdateRequestCache 事件。

    • 引發 PostUpdateRequestCache 事件。

    • 引發 EndRequest 事件。

    • 引發 PreSendRequestHeaders 事件。

    • 引發 PreSendRequestContent 事件。

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.