程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Asp.net MVC生命周期

Asp.net MVC生命周期

編輯:關於ASP.NET

Asp.net應用程序管道處理用戶請求時特別強調"時機",對Asp.net生命周期的了解多少直接影響我們寫頁面和控件的效率。

對於Asp.net MVC,我對它的生命周期還是興趣很濃,於是提出兩個問題:

一個HTTP請求從IIS移交到Asp.net運行時,Asp.net MVC是在什麼時機獲得了控制權並對請求進行處理呢?處理過程又是怎樣的?

 

以IIS7中asp.net應用程序生命周期為例,下圖是來自MSDN的一張HTTP請求處理過程發生事件的簡圖,後面我列出了一個完整的事件列表。既然Asp.net Mvc還是以Asp.net運行時為基礎那麼它必然要在Asp.net應用程序的生命周期中對請求進行截獲。第一反應當然是去web.config裡面去翻翻,我們可以看到UrlRoutingModule的配置節:

<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

下面要做的就順理成章了,用Reflector打開這個程序集,可以看到以下代碼:

protected virtual void Init(HttpApplication application)
    {
        application.PostResolveRequestCache += new EventHandler(this.OnApplicationPostResolveRequestCache);
        application.PostMapRequestHandler += new EventHandler(this.OnApplicationPostMapRequestHandler);
    }

看到這裡我們的第一個問題實際上已經有了答案:時機是在PostResolveRequestCache和PostMapRequestHandler.

ResolveRequestCache event

Occurs when ASP.NET finishes an authorization event to let the caching modules serve requests from the cache, bypassing execution of the event handler (for example, a page or an XML Web service).

源文檔 <http://msdn.microsoft.com/en-us/library/system.web.httpapplication.resolverequestcache.aspx>

PostMapRequestHandler event

Occurs when ASP.NET has mapped the current request to the appropriate event handler.

源文檔 <http://msdn.microsoft.com/en-us/library/system.web.httpapplication.postmaprequesthandler.aspx>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved