剖析Asp.Net Web API路由系统(2)

在UrlRoutingModule中,RouteData是通过依次调用每个路由对象的GetRouteData方法获取的。在Asp.Net Web API中,由于路由对象的类型为HostedHttpRoute,下面我们来看看调用GetRouteData方法时发生了什么:

剖析Asp.Net Web API路由系统

 

可以看到,在HostedHttpRoute中是通过属性OriginalRoute的GetRouteData方法获取RouteData的,由前文的剖析中,我们知道这个OriginalRoute属性是HttpWebRoute类型:

剖析Asp.Net Web API路由系统

剖析Asp.Net Web API路由系统

 

从上面剖析中可以看到,Asp.Net Web API以WebHost方式部署时,最终还是通过Asp.Net的路由系统完成匹配工作。不过有一定需要注意的是,由于在HttpWebRoute中对父类型的验证约束的方法进行了重写,所以对于约束的验证,Asp.Net Web API还是使用了自己的方式进行验证约束是否匹配:

剖析Asp.Net Web API路由系统

最后,通过一系列的工作获取到了RouteData对象和包含在里面的RouteHandler、HttpHandler后,Asp.Net Web API就可以通过这些获取到的进行请求的处理和响应了。

 总结:

通过上文的剖析,可以得出:在Asp.Net Web API以WebHost方式部署时,注册的路由是保存在全局路由表中的;在获取RouteData时,是通过Asp.Net路由系统的匹配规则进行路由匹配的,不过却实现了自己的约束验证规则。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdpsyj.html