我有一个 Web API,允许用户访问/操作“属于”其他用户的资源。它包含许多与此类似的路线:
/users/{userId}/resource
我想要一组代表当前经过身份验证的用户执行相同操作的相应路由:
/resource
理想情况下,我希望在不将 Controller 中的操作数量加倍的情况下让第二组路由正常工作,但我正在努力寻找合适的钩子(Hook)。理想情况下,我想添加一个 MessageHandler (或其他东西)来拦截每个请求,检查它是否与路由匹配,如果不匹配,则将“用户/”+经过身份验证的用户的 ID 添加到路由并再次检查.实现此目标的最佳方法是什么?
一个约束:我正在使用属性路由来实现第一组路由,理想情况下希望在不牺牲它的情况下实现这一点。
最佳答案
钩子(Hook)是 Action 选择器,正如你在这里看到的:Routing and Action Selection in ASP.NET Web API .
您可以实现自己的 Action 选择器来实现您想要的。这是有关如何执行此操作的示例:Magical Web API action selector .来自同一页面:
We will create a class that implements IActionSelector, as that would allow us to plug into the hook provided by the Web API under GlobalConfiguration.Configuration.Services.
关于c# - ASP.NET Web API 2 中的路由别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31147924/