ASP.NET Web API提供了一个独立于执行环境的抽象化的HTTP请求处理管道,而ASP.NET Web API自身的路由系统也不依赖于ASP.NET路由系统,所以它可以采用不同的寄宿方式运行于不同的应用程序中。如果采用Web Host的方式将定义Web API寄宿于一个Web应用之中,其实最终的URL路由还是通过ASP.NET本身的路由系统完成的,那么两个路由系统之间是如何衔接在一起的呢?。[本文已经同步到《How ASP.NET Web API Works?》]
目录
一、HostedHttpRoute
二、HttpWebRoute
三、HostedHttpRouteCollection
四、HttpControllerRouteHandler
五、HttpControllerHandler
前文我们谈到包括路由注册在内的对整个ASP.NET Web API管道的配置是通过HttpConfiguration来完成的。对于Web Host这种寄宿方式,这么一个HttpConfiguration可以通过静态类型GlobalConfiguration来获取。如下面的代码片断所示,GlobalConfiguration具有一个静态只读属性Configuration,它返回的正式我们用于配置的全局HttpConfiguration对象。
class GlobalConfiguration
2: {
//其他成员
delegate {
new HostedHttpRouteCollection(RouteTable.Routes));
//其他操作
return config;
8: });
9:
static HttpConfiguration Configuration
11: {
12: get
13: {
return _configuration.Value;
15: }
16: }
17: }