WEB程序的執行過程!

        WEB程序的執行過程一直是我迷惑的問題,雖然查了許多資料,但是理解依舊不明朗,一連拖了幾天,今天才用調試的方法跟蹤了一下WEB的執行過程,寫出來是爲給自己留個筆記,同時也希望大家能指正其中錯誤之處!畢竟一人理解有限!

       調試環境:WIN2K ,VS.NET2003,ASP.NET+C#登錄程序:Logon.aspx,Default.aspx;

       調試說明:Default.aspx爲保護頁,未登錄不允許訪問,將其設爲起始頁,若未登錄則轉跳到Logon.aspx;

        調試步驟:

  1. 首先在Global.asax文件中將其中所有過程設置斷點按F5運行,或使用VS.NET中調試>逐過程;
  2. 程序中過程執行情況:    Global.asax.cs文件中過程執行順序:Application_Start -〉Application_BeginRequest -〉Application_AuthenticateRequest -〉Application_EndRequest -〉Application_BeginRequest -〉Application_AuthenticateRequest -〉Session_Start -〉Application_EndRequest -〉未見執行Default.aspx頁面代碼(說明:除了Session_Start 過程中有代碼外,其餘過程均未添加任何代碼。)頁面轉跳到Logon.aspx                                                            輸入用戶名調試:Application_BeginRequest -〉Application_AuthenticateRequest -〉執行Logon.aspx頁面代碼(登錄驗證代碼)-〉Application_EndRequest -〉Application_BeginRequest -〉Application_AuthenticateRequest -〉驗證成功進入Default.aspx(執行Page_Load中代碼)-〉Application_EndRequest
  3. 本來以爲調試到此結束,於是點頁面中的註銷,程序在Application_BeginRequest處斷開(汗!經驗不夠也就罷了,理解能力也這麼差勁!)接着按F5調試:Application_BeginRequest -〉Application_AuthenticateRequest -〉執行Default.aspx頁面導入代碼 -〉Application_EndRequest -〉Application_BeginRequest -〉Application_AuthenticateRequest -〉Application_EndRequest -〉轉跳到Logon.aspx
  4. 至此程序調試告一段落,下面請看上述調試結果分析(純屬個人分析,如未有錯誤之處,那是運氣使然,還望大家指正錯誤的地方)                                                                                                                         本調試相當於程序第一次運行情況下:請看Global.asax運行順序                                                           首先程序啓動觸發Application_Star過程,然後觸發 Application_BeginRequest 過程(個人認爲是瀏覽器發送請求,是程序會話,不知對否),觸發Application_AuthenticateRequest 驗證過程,觸發Application_EndRequest 過程;不知道大家注意沒有,上述過程被觸發了兩次,兩次唯一不同的地方是第二次有Session_Start 過程;現在我說一下自己的觀點,第一次導致過程觸發的原因是瀏覽器請求,第二次是HTTP請求(也就是頁面請求),下面再把程序弄成初次運行的情況下(去掉Session_Start 中代碼)來驗證我的觀點:執行過程:Application_Start -〉Application_BeginRequest -〉Application_AuthenticateRequest -〉Application_EndRequest -〉Application_BeginRequest -〉Application_AuthenticateRequest -〉Session_Start -〉Application_EndRequest -〉未見執行Default.aspx頁面代碼頁面轉跳到Logon.aspx       天呀,難道我的分析不正確?   哪位有經驗的高手給個答案啊!    個人認爲,因爲第二次觸發中有Session_Start 所以應該是HTTP會話,而第一次,因爲首先要打開瀏覽器,也就是程序會話.
  5. 另外有個問題,就是在關閉瀏覽器退出程序的時候並不出發Application_End過程!查了一下資料,資料裏說:Application_End在應用程序終止時被觸發一次,這我搞不懂了,在什麼情況下應用程序算是被終止? 難道這個由服務器決定?用戶關閉瀏覽器不算終止程序麼?說這樣的話或許是我對B/S結構瞭解不深吧!

      好了,調試就到這了!我也寫不出來什麼了!錯誤的地方,錯誤的理解還希望大家指正出來!

           

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章