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. (二)Lua脚本语言入门

    上一篇文章忘了插入代码了,方便粘贴复制...... 函数 对于c语言就是 void aa()//c语言是用void { print("这是一个函数") } Lua就变成了 func ...

  2. Docker 1.13 管理命令

    1.12 CLI 的问题 Docker1.12 命令行接口(CLI)有40多个顶级命令,这些命令存在以下问题: 没有归类组织,这让docker 新手很难学习: 有些命令没有提供足够的上下文环境,以至于 ...

  3. [python]Python2编码问题

    以下内容说的都是 python 2.x 版本 简介 基本概念 Python "帮"你做的事情 推荐姿势 基本概念 我们看到的输入输出都是'字符'(characters),计算机(程 ...

  4. Oracle DataGuard 升级 [11.2.0.1 -> 11.2.0.4]

    Oracle DataGuard 升级 [11.2.0.1 -> 11.2.0.4] Primary: 11.2.0.1 单机,Site A. Standby: 11.2.0.1 单机,Site ...

  5. 初识Jenkins

    近期,接手了一个活,我要搭一个Jenkins持续集成的平台,所以,就把这次工作的收获分享给大家了. Jenkins是什么 Jenkins插件配置 Jenkins怎么用 新建job 系统配置 添加用户 ...

  6. 剖析Asp.Net Web API路由系统---WebHost部署方式

    上一篇我们剖析了Asp.Net路由系统,今天我们再来简单剖析一下Asp.Net Web API以WebHost方式部署时,Asp.Net Web API的路由系统内部是怎样实现的.还是以一个简单实例开 ...

  7. Flume使用说明

    关于Flume,官方定义如下: Apache Flume is a distributed, reliable, and available system for efficiently collec ...

  8. [css 揭秘]:CSS揭秘 技巧(三):背景定位

    我的github地址:https://github.com/FannieGirl/ifannie 源码都在这上面哦! 喜欢的给我一个星吧 背景定位 问题:很多时候,我们想针对容器某个角对背景图片做便宜 ...

  9. [Spark] - HashPartitioner & RangePartitioner 区别

    Spark RDD的宽依赖中存在Shuffle过程,Spark的Shuffle过程同MapReduce,也依赖于Partitioner数据分区器,Partitioner类的代码依赖结构主要如下所示: ...

  10. libviso中的姿态解算【转载】

    这篇关于libviso的文章,本人已投稿在泡泡机器人微信公众号中,放到这里,作学习笔记用. libviso一直以来被称为在视觉里程计(VO)中的老牌开源算法.它通过corner,chessboard两 ...