這一篇主要講如何通過Asp.net處理管道把請求交給MVC進(jìn)行處理的(進(jìn)入MVC處理通道)。
首先來看一下經(jīng)典的Asp.net處理管道的生命周期。
我們知道一個(gè)ASP.NET應(yīng)用程序可以有多個(gè)HttpModule,但是只能有一個(gè)HttpHandler,并且通過這個(gè)HttpHandler的BeginProcessRequest(或ProcessRequest)來處理并返回請求,查看聲明處理管道周期可知在MapHttpHandler這個(gè)周期將會(huì)根據(jù)請求的URL來查詢對應(yīng)的HttpHandler,那么它是如何查找的呢。
查找系統(tǒng)web.config中的httpModules配置節(jié),在倒數(shù)第二行發(fā)現(xiàn)一個(gè)name為UrlRoutingModule-4.0的IHttpModule配置,這是查找HttpHandler的關(guān)鍵之處。下面分析一下UrlRoutingModule的代碼:
protected virtual void Init(HttpApplication application) { if (application.Context.Items[_contextKey] != null) { return; } application.Cont