0
我对控制器操作使用自定义操作过滤器。Web api路由值在操作执行时为空过滤器
我控制器操作是这样的:
[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 }
);
}
}
它没有路由数据,路由数据只能在URL中提供,而你的方法有在http主体中提供的数据。 – Igor
如何访问Route属性参数的“侦听器”? – barteloma
@bookmarker 您是否想要访问请求即将到来的URI? –