HttpConfiguration(ASP.NET Web API管道的配置是通过HttpConfiguration来完成) :

包括路由注册在内的对整个ASP.NET Web API管道的配置是通过HttpConfiguration来完成的。
如果采用Web Host寄宿模式,此HttpConfiguration可以通过静态类型
GlobalConfiguration来获取。
 
在Application_Start()方法中进行路由注册:
GlobalConfiguration.Configure(WebApiConfig.Register);
 
Configure方法传入一个委托参数
来看一下这个委托的传入参数HttpConfiguration类型的变量Configuration:
其在CreateConfiguration方法中进行实例化:
构造函数:
RouteTable.Routes是RouteCollection类型的对象,是ASP.NET路由系统中的全局路由集合
HostedHttpRouteCollection包含一个RouteCollection类型的变量,在构造函数中将传入的RouteTable.Routes对象赋值给了该变量
构造函数:
HttpConfiguration中定义了一个HttpRouteCollection类型的属性Routes,在构造函数中进行了赋值,传入的是HostedHttpRouteCollection类型的对象,HostedHttpRouteCollection类是HttpRouteCollection的子类
 
再看一下这个,Routes属性实际是HostedHttpRouteCollection类型,所以采用Web Host寄宿模式下全局路由注册在HostedHttpRouteCollection中
 
MapHttpRoute方法为扩展方法:
其中调用了CreateRoute方法,CreateRoute为虚方法,被子类重写,所以来看HostedHttpRouteCollection中的CreateRoute方法
创建的是HostedHttpRoute类型的对象
MapHttpRoute中的Add方法在HostedHttpRouteCollection中重写:
由此可见,Web Host模式的路由注册,还是将路由对象注册到了ASP.NET路由系统的RouteCollection集合中
 
我们可以将HostedHttpRoute对象看成对一个Route对象的封装,如下面的代码片段所示,
这个被封装的Route对象对应着只读属性OriginalRoute。实现在HostedHttpRoute之中的核
心路由功能基本上是通过这个Route对象完成的,所以我们才说ASP.NET Web API的路由在
Web Host寄宿模式下还是利用ASP.NET自身的路由系统实现的。

(OriginalRoute的类型为Route(实际为HttpWebRoute)类型,正是ASP.NET系统的路由对象类型)

 
总结:

Web API框架学习——路由(一)的更多相关文章

  1. Web API框架学习——消息管道(二)

    HttpServer的GlobalConfiguration中创建: GlobalConfiguration中确定了第一个HttpMessageHandler消息管道: 首:DefaultServer ...

  2. ASP.NET Web API框架揭秘:路由系统的几个核心类型

    ASP.NET Web API框架揭秘:路由系统的几个核心类型 虽然ASP.NET Web API框架采用与ASP.NET MVC框架类似的管道式设计,但是ASP.NET Web API管道的核心部分 ...

  3. ASP.NET Web API 框架研究 ASP.NET Web API 路由

    ASP.NET Web API 核心框架是一个独立的.抽象的消息处理管道,ASP.NET Web API有自己独立的路由系统,是消息处理管道的组成部分,其与ASP.NET路由系统有类似的设计,都能找到 ...

  4. 学习ASP.NET Web API框架揭秘之“HTTP方法重写”

    最近在看老A的<ASP.NET Web API 框架揭秘>,这本书对于本人现阶段来说还是比较合适的(对于调用已经较为熟悉,用其开发过项目,但未深入理解过很多内容为何可以这样“调用”).看到 ...

  5. ASP.NET Web API 框架研究 Web Host模式路由及将请求转出到消息处理管道

    Web Host 模式下的路由本质上还是通过ASP.NET 路由系统来进行路由的,只是通过继承和组合的方式对ASP.NET路由系统的内部的类进行了一些封装,产生自己专用一套类结构,功能逻辑基本都是一样 ...

  6. abp学习(四)——根据入门教程(aspnetMVC Web API进一步学习)

    Introduction With AspNet MVC Web API EntityFramework and AngularJS 地址:https://aspnetboilerplate.com/ ...

  7. Web Api源码(路由注册)

    这篇文章只是我学习Web API框架的输出,学习方法还是输出倒逼输入比较行得通,所以不管写的好不好,坚持下去,肯定有收获.篇幅比较长,仔细思考阅读下来大约需要几分钟. 做.NET开发有好几年时间了,从 ...

  8. 【ASP.NET Web API教程】4.1 ASP.NET Web API中的路由

    原文:[ASP.NET Web API教程]4.1 ASP.NET Web API中的路由 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的内容. ...

  9. Web API中的路由(一)——约定路由

    一.Web API中的路由概念 路由的作用用一句话说明:通过request的uri找到处理该请求的Controller,Action,以及给Action的参数赋值. 一些路由的基本概念: route: ...

随机推荐

  1. PowerShell:因为在此系统上禁止运行脚本

    在安装chocolatey(官网)的时候,不能运行chocolateyInstall.pal脚本文件. 查阅资料后,得出如下解决办法: 首次在计算机上启动 Windows PowerShell 时,现 ...

  2. POJ2187(旋转卡壳)

    Beauty Contest Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 35459   Accepted: 10978 ...

  3. 使用FileReader实现前端图片预览

    在FileReader出现之前,前端的图片预览是这样实现的:把本地图片上传到服务器,服务器把图片地址返回,并把它替换到图片元素的src属性. 这种方法的缺点是:必须要先把图片上传到服务器.那么问题来了 ...

  4. 欢迎来到Devil_lixu的技术博客

    Welcome to my blog 如果你觉得内容对你还有一点点的帮助,那就果断点赞吧^_^

  5. 提升iOS审核通过率之“IPv6兼容测试”

    作者:jingle 腾讯系统测试工程师 商业转载请联系腾讯WeTest授权,非商业转载请注明出处. 原文链接:http://wetest.qq.com/lab/view/285.html 一.背景 在 ...

  6. php上线教程----阿里云下设值二级域名并将项目上线

    在工作中,我们需要在一个主机地址下分配多个域名来上线多个项目,但是怎么设置一个二级域名并且完成上线项目的,接下来我们就以阿里云为例演示整个上线流程 首先登陆你的阿里云,找到你的域名 点击解析,进入解析 ...

  7. 总结ASP.NET MVC Web Application中将数据显示到View中的几种方式

    当我们用ASP.NET MVC开发Web应用程序的时候,我们都是将需要呈现的数据通过"Controllers"传输到"View"当中,怎么去实现,下面我介绍一下 ...

  8. ctags使用说明详解

    ctags使用说明详解 一.ctags是干什么的 ctags的功能:扫描指定的源文件,找出其中所包含的语法元素,并将找到的相关内容记录下来. 我用的是Exuberant Ctags 二.ctags可以 ...

  9. redux 初识

    前言 Redux 试图让 state 的变化变得可预测 react/react-native 将组件的更新交给了状态机(state),想要更新页面活着页面的某个组件就必须得通过改变state的方式.页 ...

  10. C# winform程序免安装.net framework在XP/win7/win10环境运行!

    前文: 首先感谢群里的大神宇内流云 提供的anyexec for windows版本. 经过本人搭建虚拟机在xp环境 使用anyexec运行winfrom程序后,测试通过,如下是用的xp运行winfr ...