這一篇主要講如何通過(guò)Asp.net處理管道把請(qǐng)求交給MVC進(jìn)行處理的(進(jìn)入MVC處理通道)。
首先來(lái)看一下經(jīng)典的Asp.net處理管道的生命周期。
我們知道一個(gè)ASP.NET應(yīng)用程序可以有多個(gè)HttpModule,但是只能有一個(gè)HttpHandler,并且通過(guò)這個(gè)HttpHandler的BeginProcessRequest(或ProcessRequest)來(lái)處理并返回請(qǐng)求,查看聲明處理管道周期可知在MapHttpHandler這個(gè)周期將會(huì)根據(jù)請(qǐng)求的URL來(lái)查詢(xún)對(duì)應(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