【问题标题】:Does ASP.NET Web API's DefaultHttpControllerSelector populate its routing dictionary on every request?ASP.NET Web API 默认 HttpControllerSelector 是否在每个请求上填充其路由字典?
【发布时间】:2013-01-18 08:02:14
【问题描述】:
我正在编写一个自定义 HttpControllerSelector 来处理我的 API 中的版本控制。我查看了 github 上的 SDamann.WebApi.Versioning 库,当我运行它时,似乎路由字典正在填充每个请求。是默认的这样做还是 Sdammann 库中的设计缺陷?
如果我有很多控制器,每次请求都填充这个字典会影响性能吗?有没有其他方法可以做到这一点?
【问题讨论】:
标签:
asp.net-web-api
versioning
asp.net-web-api-routing
【解决方案1】:
控制器选择器不需要填充路由数据。路由将填充路由数据。默认管道的工作方式是这样的:
路由运行 - 找到匹配的路由并使用“controller”、“action”和其他参数等值填充路由数据
控制器选择器运行 - 查看“控制器”路由参数的路由数据并使用该控制器名称来确定要使用的控制器类型
然后框架使用选定的控制器类型来分派请求