先上一张图吧 asp.net请求机制的图 by传智播客邹华栋老师
然后是 邹老师添加MVC请求过程的图
其实MVC 是在.netframework上加了一个过滤器 HttpModule 在C:\Windows\Microsoft.NET\Framework\v4.0.30319
下的配置文件里加入的 <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" />
网站在第一次请求的时候会把这个类 创建出来调用其Init()方法 注册到事件管道上
1浏览器通过报文发送http请求 到服务器IIS
2IIS 把请求交给扩展模块ASPNET_ISAPI.dll (C++写的非托管程序,相当于IIS与framework的中间程序)
3 framework创建Httpcontext请求上下文 (request/response/session/application/cookie/server...)
4通过HttpApplicationFactory 工厂创建HttpApplicaiton 调用它的PR方法 (事件管道)
5 第七个事件创建MvcHanlder 存入HttpContext的私有属性remapHandler里(可以通过.net reflector看到)
6第八个事件就是判断这个remapHandler里是不是为空 如果不是为空的话就 Httpcontent.RemapHandler(mvcHandler);
7在11/12方法之间执行MvcHandler的PR方法创建控制器对象