Web API获取路由值

Kyl*_*yle 14 asp.net-web-api asp.net-web-api-routing

有没有办法从Web API上下文中运行的服务方法(控制器外部)静态获取路由值?例如,我可以在ASP.NET MVC中执行以下操作:

var mvcHandler = HttpContext.Current.Handler as MvcHandler;
var routeValues = mvcHandler.RequestContext.RouteData.Values;
Run Code Online (Sandbox Code Playgroud)

我想为Web API找到此代码的等效版本.

当我尝试调试示例Web API请求并查看HttpContext.Current.Handler它是类型时HttpControllerHandler,但此类型没有任何属性来访问路由数据.

编辑

尝试帮助提供更多信息.我试图从中读取值的代码是在我为我的应用程序构建自定义对象的工厂类中.

Kir*_*lla 20

您可以在HttpRequestMessage上使用GetRouteData()扩展名.您需要包含System.Net.Http命名空间才能获得此功能.

System.Web.Http.Routing.IHttpRouteData routeData = Request.GetRouteData();
Run Code Online (Sandbox Code Playgroud)


Kyl*_*yle 11

我能够找到一个解决方案来获取MVC请求或Web API请求的路由值.

HttpContext.Current.Request.RequestContext.RouteData
Run Code Online (Sandbox Code Playgroud)