发送给基于 ASP.NET MVC 的 Web 应用程序的请求首先通过 UrlRoutingModule 对象(一个 HTTP 模块)进行传递。 此模块将分析请求并执行路由选择。 UrlRoutingModule 对象将选择与当前请求匹配的第一个路由对象。 (路由对象是实现 RouteBase 的类,并且通常是Route 类的实例。)如果任何路由都不匹配,则 UrlRoutingModule 对象不执行任何操作,并允许请求回退到常规的 ASP.NET 或 IIS 请求处理流程。

从选定的 Route 对象中,UrlRoutingModule 对象将获得一个对象,所获得的对象将实现IRouteHandler 接口并与 Route 对象关联。 通常,在 MVC 应用程序中,这将是MvcRouteHandler 类的一个实例。 MvcRouteHandler 实例将创建一个实现 IHttpHandler 接口的 MvcHandler 对象。 然后,MvcHandle 对象会选择将最终处理该请求的控制器。 有关更多信息,请参见 ASP.NET 路由

注意

如果 ASP.NET MVC Web 应用程序运行在 IIS 7.0 中,则 MVC 项目不需要文件扩展名。 但是,在 IIS 6.0 中,处理程序要求将 .mvc 文件扩展名映射到 ASP.NET ISAPI DLL。

UrlRoutingModule 和 MvcRouteHandler 类是 ASP.NET MVC 框架的入口点。 它们执行下列操作:

  • 选择 MVC Web 应用程序中合适的控制器。

  • 获取特定的控制器实例。

  • 调用该控制器的 Execute 方法。

下表列出了 MVC Web 项目的执行阶段。

 

阶段

详细信息

接收对应用程序的第一个请求

在 Global.asax 文件中,Route 对象将添加到 RouteTable 对象中。

执行路由

UrlRoutingModule 模块使用 RouteTable 集合中第一个匹配的 Route 对象来创建RouteData 对象,然后使用所创建的对象创建 RequestContext 对象。

创建 MVC 请求处理程序

MvcRouteHandler 对象将创建 MvcHandler 类的实例,并将 RequestContext 实例传递给处理程序。

创建控制器

MvcHandler 对象使用 RequestContext 实例标识用于创建控制器实例的IControllerFactory 对象(通常是 DefaultControllerFactory 类的实例)。

执行控制器

MvcHandler 实例调用控制器的 Execute 方法。

调用操作

对于从 ControllerBase 类继承的控制器,与该控制器关联的 ControllerActionInvoker 对象将决定要调用的 controller 类的操作方法,然后调用该方法。

执行结果

操作方法将接收用户输入,准备合适的响应数据,然后通过返回结果类型来执行结果。可执行的内置结果类型包括:ViewResult(呈现视图并且是最常用的结果类型)、RedirectToRouteResultRedirectResultContentResultJsonResultFileResult和 EmptyResult

转载:http://technet.microsoft.com/zh-cn/magazine/dd381612(VS.100).aspx

了解 MVC 应用程序执行过程的更多相关文章

  1. ASP.NET MVC应用程序执行过程分析

    ASP.NET MVC应用程序执行过程分析 2009-08-14 17:57 朱先忠 朱先忠的博客 字号:T | T   ASP.NET MVC框架提供了支持Visual Studio的工程模板.本文 ...

  2. Windows程序执行过程

    Windows应用程序: WinMain函数(入口函数): 1. 设计窗体类,注冊窗体类.WNDCLASS 2. 创建窗体,显示及更新窗体. 3. 消息循环. 窗体过程函数(回调函数):WindowP ...

  3. MFC程序执行过程剖析

    一 MFC程序执行过程剖析 1)我们知道在WIN32API程序当中,程序的入口为WinMain函数,在这个函数当中我们完成注册窗口类,创建窗口,进入消息循环,最后由操作系统根据发送到程序窗口的消息调用 ...

  4. MFC程序执行过程剖析(转)

    一 MFC程序执行过程剖析 1)我们知道在WIN32API程序当中,程序的入口为WinMain函数,在这个函数当中我们完成注册窗口类,创建窗口,进入消息循环,最后由操作系统根据发送到程序窗口的消息调用 ...

  5. Java程序执行过程及内存机制

    本讲将介绍Java代码是如何一步步运行起来的,其中涉及的编译器,类加载器,字节码校验器,解释器和JIT编译器在整个过程中是发挥着怎样的作用.此外还会介绍Java程序所占用的内存是被如何管理的:堆.栈和 ...

  6. Android入门学习:Android 系统框架及应用程序执行过程

    Android基础知识学习 新手上路,还请多多帮助.由于初学,博客内容难免有不正确的地方,还请各位多多指教,相互学习! 主要内容: 1.Android层次架构及主要功能 2.Android编程模型,程 ...

  7. 通过DT10获取程序执行过程中的实时覆盖率

    DT10是新一代的动态测试工具,可以长时间跟踪记录目标程序执行情况,获取目标程序动态执行数据,帮助进行难于重现的Bug错误分析,覆盖率检测,性能测试,变量跟踪等等功能. 系统测试覆盖率,通常是用于判断 ...

  8. php程序执行过程--非宏观和微观而是写的程序一行一行的路径----利用xdebug了解一段程序的执行过程----覆盖率

    1.xdebug_start_code_coverage();//在需要开始跟踪程序执行路径时使用 2.var_dump(xdebug_get_code_coverage());//在结尾使用打印程序 ...

  9. 【JAVA】【基础知识】Java程序执行过程

    1. Java程序制作过程 使用文本编辑器进行编辑 2. 编译源文件,生成class文件(字节码文件) javac源文件路径. 3.运行程序class文件.

随机推荐

  1. 使用Yeoman搭建 AngularJS 应用 (4) —— 让我们搭建一个网页应用

    在开发一个的网页传统工作流程中,你需要大量的时间去设置引用文件,下载依赖文件,并且手动的创建网页文件结构.Yeoman生成器将会帮助你完成这些.让我们安装一个AngularJS项目的生成器. 安装An ...

  2. C#学习笔记(二)

    1.注释:注销,解释2.单行://多行:/**/文档注释:///按enter主食要保证 别人一看就明白3.快速对期待吗:ctrl+k+d,按住ctrl不放,按k,迅速抬起,再按d(按D得时候k已经抬起 ...

  3. Unity3d大会的部分总结

    原地址:http://blog.csdn.net/sgnyyy/article/details/23775219 一.项目开发,管理和发布策略 1.       四大准则 a.       美术的资源 ...

  4. POJ3034+DP

    题意:给定一个N*N的矩阵, 然后在这个矩阵的每个格子在任意时间会出现一个鼹鼠,这个出现     出现鼹鼠的时间是输出信息所确定的. 现在你手里有一把锤子能够去锤这些鼹鼠. 你能     够移动锤子, ...

  5. linux Ubuntu12 设置root用户登录图形界面

    Ubuntu 12.04默认是不允许root登录的,在登录窗口只能看到普通用户和访客登录.以普通身份登陆Ubuntu后我们需要做一些修改,普通用户登录后,修改系统配置文件需要切换到超级用户模式,在终端 ...

  6. Java经典书籍

    Java Web开发教程---孙霞JSP应用开发详解(第三版)---刘晓华.张健.周慧贞Spring in Action---Craig Walls精通Struts基于MVC的Java Web设计与开 ...

  7. ENVI Services Engine5.1 应用开发入门教程

    原文地址: ENVI Services Engine5.1 应用开发入门教程_ENVI-IDL中国_新浪博客 http://blog.sina.com.cn/s/blog_764b1e9d0102uy ...

  8. 212. Word Search II

    题目: Given a 2D board and a list of words from the dictionary, find all words in the board. Each word ...

  9. java遍历树(深度遍历和广度遍历

    java遍历树如现有以下一颗树:A     B          B1               B11          B2               B22     C          C ...

  10. 24.allegro中光绘gerber[原创]

    光绘 一,基本设置 或者: ------------------------------------- ------- ------- 二,需要设置内容: 1)顶层和底层: 2)内部布线层: 3)OU ...