有没有办法从Web API上下文中运行的服务方法(控制器外部)静态获取路由值?例如,我可以在ASP.NET MVC中执行以下操作:
var mvcHandler = HttpContext.Current.Handler as MvcHandler;
var routeValues = mvcHandler.RequestContext.RouteData.Values;
我想为Web API找到此代码的等效版本。
当我尝试调试示例Web API请求并查看HttpContext.Current.Handler
时,它的类型为HttpControllerHandler
,但此类型没有任何属性来访问路由数据。
修改
尝试帮助提供更多信息。我试图从中读取值的代码是在我为我的应用程序构建自定义对象的工厂类中。
答案 0 :(得分:19)
您可以在HttpRequestMessage上使用GetRouteData()扩展名。您需要包含System.Net.Http命名空间才能获得此功能。
System.Web.Http.Routing.IHttpRouteData routeData = Request.GetRouteData();
答案 1 :(得分:11)
我能够找到一个解决方案来获取MVC请求或Web API请求的路由值。
HttpContext.Current.Request.RequestContext.RouteData