ASP.NET MVC 请求流程


 一、应用程序启动

  1.Application_Start方法,程序启动

  

  2.RegisterRoutes方法,注册路由

  

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

  

  二、请求进入

  在 “$\Windows\Microsoft.NET\Framework\版本号\Config\Web.config“ 中可以找到 " ”

  证明请求会经过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视图引擎来展示页面

  

时间: 2024-08-02 19:04:25

ASP.NET MVC 请求流程的相关文章

ASP.NET MVC 请求流程:Controller

1.请求进入时,.NET Framework就找出所有的HttpModule,以此调用它们的Init方法,如下图所示,我们重点关注"UrlRoutingModule-4.0"的HttpModule. 2.我们看看UrlRoutingModule方法中做了哪些操作 . 继续往下看 我们来到了PostResolveRequestCache方法中,我们进入RouteCollection.GetRouteData()方法中看下,如下所示 看过上节的同学会知道这里的routeData就是Syst

.NET MVC请求流程

ASP.NET MVC 请求流程:Controller MvcHandler Action Action参数赋值

ASP.Net请求处理机制初步探索之旅 - Part 5 ASP.Net MVC请求处理流程

好听的歌 我一直觉得看一篇文章再听一首好听的歌,真是种享受.于是,我在这里嵌入一首好听的歌,当然你觉得不想听的话可以点击停止,歌曲 from 王菲 <梦中人>: 开篇:上一篇我们了解了在WebForm模式下一个Page页面的生命周期,它经历了初始化Init.加载Load以及呈现Render三个重要阶段,其中构造了页面控件树,并对页面控件树进行了大量的递归操作,最后将与模板结合生成的HTML返回给了浏览器.那么,在ASP.NET MVC模式下,一个页面的生命周期又经历了哪些步凑呢?别急,本篇漫漫

ASP.NET MVC的流程讲解

开始想这个标题的时候,很是忧郁到底叫什么标题会比较好哪,最后还是确定为讲解,虽然略显初级,但是很多概念,想通了还是比较有价值的.废话略过,开始! 1.MVC的基本开发流程   2.webform和MVC的选择   3.MVC的内部过程 1.MVC的开发流程 MVC的出现时微软在2009年左右开始提出的网站开发的新的发展方向,这个方面的开发官方解释是可以比较好的实现三层分离,而且分离之后,可以实现复用等相关好处,通常人们列举的例子是ui方面可以同时支持HTML网络或者WAP网络.但是其实个人的理解

ASP.NET MVC深度接触:ASP.NET MVC请求生命周期

这篇博文的目的旨在详细描述ASP.NET MVC 请求从开始到结束的每一个过程.我希望能理解在浏览器输入URL 并敲击回车来请求一个ASP.NET MVC 网站的页面之后发生的任何事情. 为什么需要关心这些?有两个原因.首先是因为ASP.NET MVC 是一个扩展性非常强的框架.例如,我们可以插入不同的ViewEngine 来控制网站内容呈现的方式.我们还可以定义控制器生成和分配到某个请求的方式.因为我想发掘任何ASP.NET MVC 页面请求的扩展点,所以我要来探究请求过程中的一些步骤. 其次

【MVC】ASP.NET MVC 请求生命周期

当一个asp.net mvc应用程序提出请求,为了响应请求,包含一些请求执行流程步骤! 在asp.net mvc应用程序Http request和Http response 过程中,主要包含8个步骤: 1)RouteTable(路由表)的创建      2)UrlRoutingModule 请求拦截      3)Routing engine 确定route      4)route handler 创建相关的IHttpHandler实例      5)IHttpHandler实例确定Contr

Spring MVC请求流程

Spring MVC 发起请求到前端控制器DispathServlet 前端控制器请求处理器映射器 handerMapping查找handler 处理器映射器handerMapping像前端控制器返回handler 处理器映射器调用处理器适配器,去执行handler handler处理完成给处理器适配器返回modelAndView 处理器适配器像前端控制器返回modelView 前端控制器请求试图解析器去进行试图解析 视图解析器像前端控制器返回View 前端控制器进行试图渲染 前端控制器向用户返

ASP.NET MVC请求特殊静态文件返回404 Not Found

今天在请求静态的json档案以及woff2档案,会返回404错误,需要在Web.Config里修改: 1 <system.webServer> 2 <modules> 3 <remove name="FormsAuthentication" /> 4 </modules> 5 <handlers> 6 <add name="MiniProfiler" path="mini-profiler-

asp.net mvc 请求缓慢原因之一(session影响并发)

现象:在网站中,打开一个页面耗时比较严重,进而打开另一个页面进行登录验证,发现多个http请求没有响应和返回值. 在网上所查资料,偶然发现是由于session的锁机制. 原来Session实现了Reader/Writer的锁机制: 当页面对Session具有可写功能(即页面有<%@ Page EnableSessionState="True" %>标记),此时直到请求完成该页面的Session持有一个写锁定. 当页面对Session具有只读功能(即页面有<%@ Pag