c# - ASP.NET Web API 2 中的路由别名

标签 c# asp.net asp.net-web-api asp.net-web-api-routing

我有一个 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/

相关文章:

c# - Telerik RadGrid-向 GridEditCommandColumn 添加 javascript 方法

c# - WebApi 版本控制单个 Controller

c# - 在 C# 中是否可能进行缓冲区溢出攻击?

c# - asp.net提交过程

C# - 如何从 SqlConnection 获取 TrustedConnection 属性

ASP.NET "Remember Me"cookie

javascript - 使用 Web.config 中的选项填充 HTML 选择

asp.net - URL 中的 Web API 嵌套资源

c# - 声明比角色更好吗

c# - 仅在抛出异常时将堆栈跟踪写入日志文件