本系列目錄:ASP.NET MVC4入門到精通系列目錄匯總
ASP.NET MVC的請求管道和ASP.NET請求管道基本上一模一樣,如果你對ASP.NET請求管道十分熟悉的話,你只要關注一下不同點。看懂下面兩張圖,你就基本上明了了,這兩張圖是從鄒華棟博客上面取的。(說明:我不是給傳智帶鹽的,這圖確實畫得通俗易懂)不明白的地方,用reflector工具查看MVC的源碼,沒其它的。.NET框架的源碼里面幾乎涉獵了各種設計模式。這一節的內容,我也不知道怎么說,都在圖里面了,看圖比直接用文字說明要明了得多,只是這些東西還是比較抽象的,如果你時間充裕,建議看下MVC的源碼。怎么看?就找MVC框架引用到的那幾個dll,用反編譯工具看下就可以了,如果要深入,直接去官網下載源碼看,反復看幾遍,你就豁然開朗了,不過需要一定的C#基礎。
MVC19個管道事件:
/* 1.BeginRequest 開始處理請求 2.AuthenticateRequest 授權驗證請求,獲取用戶授權信息 3.PostAuthenticateRequest 獲取成功 4.AunthorizeRequest 授權,一般來檢查用戶是否獲得權限 5.PostAuthorizeRequest 獲得授權 6.ResolveRequestCache 獲取頁面緩存結果(如果沒有則執行) 7.PostResolveRequestCache 已獲取緩存 8.PostMapRequestHandler 創建頁面對象 9.AcquireRequestState 獲取Session -- 先判斷當前頁面對象是否實現了IRequiresSessionState接口,如果實現了,則從瀏覽器發來的請求報文頭中獲得SessionId,並到服務器的 Session池中獲得對應的Session對象,最后賦值給 HttpContext的Session屬性。 10.PostAcquireRequestState 獲得Session 11.PreRequestHandlerExecute 准備執行頁面對象 ×執行頁面對象的ProcessRequest方法(1.ashx,1.aspx),如果請求的是1.aspx,則會運行頁面生命周期 12.PostRequestHandlerExecute 執行完頁面對象了 13.ReleaseRequestState 釋放請求狀態 14.PostReleaseRequestState 已釋放請求狀態 15.UpdateReuqestCache 更新緩存 16.PostUpdateRequestCache 已更新緩存 17.LogRequest 日志記錄 18.PostLogRequest 已完成日志 19.EndRequest 完成 */
這節純理論的東西,只能自己慢慢悟。