ASP.NET MVC 请求流程
一、应用程序启动
1.Application_Start方法,程序启动

2.RegisterRoutes方法,注册路由

3.System.Web.Mvc.RouteCollectionExtensions.MapRoute方法,出现了MvcRoutehandler对象

二、请求进入
在 “$\Windows\Microsoft.NET\Framework\版本号\Config\Web.config“ 中可以找到 " <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" />”
证明请求会经过System.Web.Routing.UrlRoutingModule.Init方法。
1.System.Web.Routing.UrlRoutingModule.Init方法

2.System.Web.Routing.UrlRoutingModule.PostResolveRequestCache方法

3.System.Web.Routing.RouteCollection.GetRouteData方法

4.System.Web.Routing.Route.GetRouteDara方法

这里的this.RouteHandler就是在第一部分中应用程序启动是实例化好的MvcRouteHandler对象。好了,我们现在已经得到了MvcRouteHandler实例,继续向下走,先返回第2步:
2.System.Web.Routing.UrlRoutingModule.PostResolveRequestCache方法

3. System.Web.Mvc.MvcRouteHandler.GetHttpHandler方法,返回MvcHandler对象

4.System.Web.Mvc.MvcHandler的构成方法

发现这个类实现了IHttpHandler接口,那么不得不去看下ProcessRequest方法
5.System.Web.Mvc.MvcHandler.ProcessRequest方法

6.System.Web.Mvc.MvcHandler.ProcessRequestInit方法

返回到第5步
5.System.Web.Mvc.MvcHandler.ProcessRequest方法

6.System.Web.Mvc.ControllerBase.Excete方法

7.System.Web.Mvc.Controller.ExcuteCore方法

8.System.Web.Mvc.Controller.ActionInvoker属性

9.System.Web.Mvc.Controller.CreateActionInvoker方法

返回了实现IActionInvoker接口的实例,返回第7步
7.System.Web.Mvc.Controller.ExcuteCore方法

8.System.Web.Mvc.ControllerActionInvoker.InvokeAction方法

9.System.Web.Mvc.ControllerActionInvoker.InvokeActionResult方法

10.System.Web.Mvc.ActionResult类,封装一个操作方法的结果

我们来看一下重写了ExcuteResult的ActionResult的派生类:

我们就选ViewResultBase类中的ExcuteResult方法看看
11.System.Web.Mvc.ViewResultBase.ExcuteResult方法

12.System.Web.Mvc.ViewResult.ExcuteResult方法

13.System.Web.Mvc.ViewEngineCollection.FindView方法

14.System.Web.Mvc.VirtualPathProviderViewEngine.FindView方法

返回第13步
13.System.Web.Mvc.ViewEngineCollection.FindView方法

14.System.Web.Mvc.ViewEngineCollection.Find方法

15.System.Web.Mvc.ViewEngineCollection.Find方法

至此,我们得到了ViewEngineResult对象,ViewEngineResult表示定位视图引擎的结果。
现在我们返回第11步,继续向下走
11.System.Web.Mvc.ViewResultBase.ExcuteResult方法

12.System.Web.Mvc.BuildManagerCompiledView.Render方法

13. System.Web.Mvc.RazorView.RenderView方法,在这里使用Razor视图引擎来展示页面

ASP.NET MVC 请求流程的更多相关文章
- asp.net mvc请求流程
收对应用程序的第一个请求 > 执行路由 > 创建 MVC 请求处理程序 > 创建控制器 > 执行控制器 > 调用操作 > 执行结果
- ASP.NET MVC 请求流程:Controller
1.请求进入时,.NET Framework就找出所有的HttpModule,以此调用它们的Init方法,如下图所示,我们重点关注"UrlRoutingModule-4.0"的Ht ...
- ASP.NET MVC 请求流程:Route
1.RouteTable RouteTable翻译过来的意思就是路由表,一个Web应用程序具有一个全局的路由表,该路由表通过System.Web.Routiing.RouteTable的静态只读属性R ...
- .NET MVC请求流程
ASP.NET MVC 请求流程:Controller MvcHandler Action Action参数赋值 .NET MVC权限设计思考之切入点
- ASP.Net请求处理机制初步探索之旅 - Part 5 ASP.Net MVC请求处理流程
好听的歌 我一直觉得看一篇文章再听一首好听的歌,真是种享受.于是,我在这里嵌入一首好听的歌,当然你觉得不想听的话可以点击停止,歌曲 from 王菲 <梦中人>: --> 开篇:上一篇 ...
- ASP.Net MVC请求处理流程
ASP.Net MVC请求处理流程 好听的歌 我一直觉得看一篇文章再听一首好听的歌,真是种享受.于是,我在这里嵌入一首好听的歌,当然你觉得不想听的话可以点击停止,歌曲 from 王菲 <梦中人& ...
- asp.net mvc 请求处理流程,记录一下。
asp.net mvc 请求处理流程,记录一下.
- 【MVC】ASP.NET MVC 请求生命周期
当一个asp.net mvc应用程序提出请求,为了响应请求,包含一些请求执行流程步骤! 在asp.net mvc应用程序Http request和Http response 过程中,主要包含8个步骤: ...
- Asp.net Mvc 请求是如何到达 MvcHandler的——UrlRoutingModule、MvcRouteHandler分析,并造个轮子
这个是转载自:http://www.cnblogs.com/keyindex/archive/2012/08/11/2634005.html(那个比较容易忘记,希望博主不要生气的) 前言 本文假定读者 ...
随机推荐
- 记一个界面刷新相关的Bug
今天遇到一个比较有意思的bug, 这里简单记录下. Bug的症状是通过拖拉边框把我们客户端主窗口拖小之后,再最大化,会发现窗口显示有问题, 看起来像是刷新问题, 有些地方显示的不对了. 这里要说明的是 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(十):多客服接口说明
微信官方的多客服接口原理是通过用户发送的信息,开发者服务器返回一条指定类型的响应信息,使用户的对话状态切换到官方的多客服状态(持续一段时间),这段时间内用户发送的所有信息都不会到达开发者的服务器,而是 ...
- java.sql.SQLException: JZ00L
出现, java.sql.SQLException: JZ00L: 登录失败.检查与此异常现象有关的 SQL 警告以获得失败原因. at com.sybase.jdbc3.jdbc.ErrorMess ...
- DIY一个前端模板引擎.(一)
前端MVVM 模式有点很多,完全摆脱了意大利面条式的代码.个人认为,所有MVVM 的框架基础就是一个高性能的JS模板引擎,它极大简化了 DOM 操作, 使页面渲染和业务逻辑彻底分离.为了理解模板引擎原 ...
- Oracle建表脚本记录
--删除 drop table dianfei; --创建表 create table dianfei ( uon ) not null, mmonth ) not null, ddf ,) not ...
- JavaScript中this的一些怪异现象
<!--JavaScript伪协议和内联事件对于this的指向不同--> <a href="#" onclick="alert(this.tagName ...
- ES2005 js =>
ES2005 js => 不会写js Learn ES2015
- Netty学习四:Channel
1. Channel Channel是Netty的核心概念之一,它是Netty网络通信的主体,由它负责同对端进行网络通信.注册和数据操作等功能. 1.1 工作原理 如上图所示: 一旦用户端连接成功,将 ...
- 快速入门系列--WCF--08扩展与新特性
最后一章将进行WCF扩展和新特性的学习,这部分内容有一定深度,有一个基本的了解即可,当需要自定义一个完整的SOA框架时,可以再进行细致的学习和实践. 服务端架构体系的构建主要包含接下来的几个要素:服务 ...
- Unity 产生各不相同的随机数
1. 网上很多方法都说用时间种子来解决,但是在极短的时间内,这种方法没效 Random r = new Random(DateTime.Now.Millisecond); Random Counter ...