【发布时间】:2016-02-23 01:02:42
【问题描述】:
如何在 web api 2,框架 4.5 的消息处理程序中从请求中提取控制器和操作名称?例如,这会获取完整的 url:` URI url = request.RequestUri; 字符串 originalUrl = url.OriginalString;
我正在使用属性路由`
【问题讨论】:
如何在 web api 2,框架 4.5 的消息处理程序中从请求中提取控制器和操作名称?例如,这会获取完整的 url:` URI url = request.RequestUri; 字符串 originalUrl = url.OriginalString;
我正在使用属性路由`
【问题讨论】:
var config = request.GetConfiguration();
var routeData = config.Routes.GetRouteData(request);
var controllerContext = new HttpControllerContext(config, routeData, request);
request.Properties[HttpPropertyKeys.HttpRouteDataKey] = routeData;
controllerContext.RouteData = routeData;
// get controller type
var controllerDescriptor = new DefaultHttpControllerSelector(config).SelectController(request);
var controllerName = controllerDescriptor.ControllerName;
controllerContext.ControllerDescriptor = controllerDescriptor;
// get action name
var actionMapping = new ApiControllerActionSelector().SelectAction(controllerContext);
var actionName = actionMapping.ActionName;
所有功劳归this gist。
【讨论】: