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