asp.net mvc的生命周期主要分三个阶段
1、网址路由对比2、找到对应的Controller执行相应的Action3、执行View并返回结果完整的生命周期Request->UrlRoutingModule->RouteHandler->MvcHandler->DefaultControllerFactory->Controller->View Factory->View->Response执行control和view当程序执行到MvcHandler,它的入口是ProcessRequest,在MvcHandler中的ProcessRequest protected internal virtual void ProcessRequest(HttpContextBase httpContext) { SecurityUtil.ProcessInApplicationTrust(() => { IController controller; IControllerFactory factory; ProcessRequestInit(httpContext, out controller, out factory); try { controller.Execute(RequestContext); } finally { factory.ReleaseController(controller); } }); }第一步:获取Controller,ControllerFactory// 获取控制器的名称string controllerName = RequestContext.RouteData.GetRequiredString("controller");//获取控制器工厂,默认是DefaultControllerFactoryfactory = ControllerBuilder.GetControllerFactory();//创建控制器controller = factory.CreateController(RequestContext, controllerName);第二步:执行Controller的Action controller.Execute(RequestContext); 最后调用Controller的ExecuteCore方法 protected override void ExecuteCore() { // If code in this method needs to be updated, please also check the BeginExecuteCore() and // EndExecuteCore() methods of AsyncController to see if that code also must be updated. PossiblyLoadTempData(); try { string actionName = RouteData.GetRequiredString("action"); if (!ActionInvoker.InvokeAction(ControllerContext, actionName)) { HandleUnknownAction(actionName); } } finally { PossiblySaveTempData(); } }第三步:执行View如果从Action返回的是ViewResult,Mvc会调用实现IViewEngine对象的FindView方法,然后再调用实现IView(WebFormView)的Render()方法,将Html返回给客户端