標籤: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 請求處理完整過程