我在控制器操作上使用自定义操作过滤器。
我的控制器动作是这样的:
[HttpPost]
[Route("listener")]
[MyAttr]
public IHttpActionResult Listener([FromBody]Parameters request)
{
return Ok();
}
我想从动作过滤器中访问Route("listener")
值。
public class MyAttr: ActionFilterAttribute
{
public async override Task OnActionExecutedAsync(HttpActionExecutedContext actionExecutedContext, CancellationToken cancellationToken)
{
var route = actionExecutedContext.ActionContext.RequestContext.RouteData;
}
}
但是RouteData值集合没有项目。如何获取路线值?
我的配置是这样的:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
答案 0 :(得分:0)
请在 WebApiConfig.cs 文件中添加 / {action} 。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
api / ControllerName / Listener 链接就是那个。