如何在web api 2,framework 4.5中的消息处理程序中从请求中提取控制器和操作名称?例如,这将获得完整的URL:` Uri url = request.RequestUri; string originalUrl = url.OriginalString;
使用属性路由`
答案 0 :(得分:1)
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。