【问题标题】:Getting controller and action from inside a message handler (NOT a controller)?从消息处理程序(不是控制器)内部获取控制器和操作?
【发布时间】:2016-02-23 01:02:42
【问题描述】:

如何在 web api 2,框架 4.5 的消息处理程序中从请求中提取控制器和操作名称?例如,这会获取完整的 url:` URI url = request.RequestUri; 字符串 originalUrl = url.OriginalString;

我正在使用属性路由`

【问题讨论】:

    标签: routing handler message


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多