MVC执行过程

HttpRuntime中的PR方法
1,封装HttpContext
2,获取HttpApplication 主要做3件事
a,执行本事件时主要调用Init将Global编译得到类型,
b,确保Appstart被调用,在mvc中主要是注册路由规则,
c,获取Application 对象完成内部模块的初始化UrlRoutingModule向第七个事件注册了处理程序
3,执行管道事件
这里执行19个事件:
到第7,8个事件之间时干一件事
获取处理器对象 就是MvcRouteHandler
MVC在asp.net中的执行过程
HomeController:Controller:ControllerBase
中的Execute=》ExecuteCore方法那么到底是哪个类在执行这个方法呢
HomeController吧 应该是因为是通过反射的方法生成的IController类来执行Execute方法。


到11,12时干一件事
调用处理器的PR方法


到第19件事结束
下面是请求管道中的19个事件.

(1)BeginRequest: 开始处理请求

(2)AuthenticateRequest授权验证请求,获取用户授权信息

(3):PostAuthenticateRequest获取成功

(4): AunthorizeRequest 授权,一般来检查用户是否获得权限

(5):PostAuthorizeRequest:获得授权

(6):ResolveRequestCache:获取页面缓存结果

(7):PostResolveRequestCache 已获取缓存 当前请求映射到MvcHandler(pr): 创建控制器工厂 ,创建控制器,调用action执行,view→response

//action Handler : PR()

(8):PostMapRequestHandler 创建页面对象:创建 最终处理当前http请求的 Handler 实例: 第一从HttpContext中获取当前的PR Handler ,Create

(9):PostAcquireRequestState 获取Session

(10)PostAcquireRequestState 获得Session

(11)PreRequestHandlerExecute:准备执行页面对象
执行页面对象的ProcessRequest方法

(12)PostRequestHandlerExecute 执行完页面对象了

(13)ReleaseRequestState 释放请求状态

(14)PostReleaseRequestState 已释放请求状态

(15)UpdateRequestCache 更新缓存

(16)PostUpdateRequestCache 已更新缓存

(17)LogRequest 日志记录

(18)PostLogRequest 已完成日志

(19)EndRequest 完成、