.NET MVC执行过程 及 生命周期步骤

1、网址路由比对

2、执行ControllerAction

3、执行View并返回结果

在这里插入图片描述

  1. Request 请求到来
  2. IIS 根据请求特征将处理权移交给 ASP.NET
  3. UrlRoutingModule将当前请求在 Route Table中进行匹配
  4. UrlRoutingModuleRouteCollection中查找Request匹配的RouteHandler,默认是MvcRouteHandlerMvcRouteHandler 创建 MvcHandler实例.
  5. MvcHandler执行 ProcessRequest.
  6. MvcHandler 使用 IControllerFactory获得实现了IController接口的实例,找到对应的HomeController
  7. 根据Request触发HomeControllerIndex方法
  8. Index将执行结果存放在ViewData
  9. HomeControllerIndex方法返回 ActionResult
  10. Views/Home/Index.aspxViewData呈现在页面上
  11. Index.aspx执行ProcessRequest方法
  12. Index.aspx执行Render方法输出到客户端

在使用MVC中是由IgnoreRoute()辅助方法对比成功的,会导致程序直接跳离MVC的执行生命周期,将程序继续执行的权利交回给IIS,由IIS决定接下来应该由哪个模块或哪个处理例程(Handler)来执行。

阶段详细
接收应用程序的第一次请求Global.asax文件中, Route对象 被添加到RouteTable对象.
执行路由选择UrlRoutingModule 模块使用第一个在RouteTable 集合中匹配的Route 对象来创建RouteData对象, 然后它将使用这个RouteData对象来创建RequestContext (IHttpContext)对象.
创建MVC request handlerMvcRouteHandler 创建MvcHandler类的一个实例,并且将它传递给RequestContext实例.
创建controllerMvcHandler对象使用RequestContext实例来确认IControllerFactory 对象(DefaultControllerFactory类的一个实例) ,以用来创建conteoller实例。
执行controllerMvcHandler 实例调用controller的执行method.
调用action大部分controllers 继承自Controller基础类. 与controller相关联的ControllerActionInvoker 对象决定这个controller类的哪个方法将被调用 , 然后再调用那个方法.
执行result大部分controllers 继承自Controller基础类. 与controller相关联的ControllerActionInvoker 对象决定这个controller类的哪个方法将被调用 , 然后再调用那个方法.

生命周期步骤概览

当我们对ASP.NET MVC网站发出一个请求的时候,会发生5个主要步骤:

步骤1:创建RouteTable

当ASP.NET应用程序第一次启动的时候才会发生第一步。RouteTableURL映射到Handler

步骤2:UrlRoutingModule拦截请求

第二步在我们发起请求的时候发生。UrlRoutingModule拦截了每一个请求并且创建和执行合适的Handler

步骤3:执行MvcHandler

MvcHandler创建了控制器,并且把控制器传入ControllerContext,然后执行控制器。

步骤4:执行控制器

控制器检测要执行的控制器方法,构建参数列表并且执行方法。

步骤5:调用RenderView方法

大多数情况下,控制器方法调用RenderView()来把内容呈现回浏览器。

Controller.RenderView()方法把这个工作委托给某个ViewEngine来做。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值