Web API路由值在操作执行过滤器时为空 [英] Web api route values is empty on action executes filter
本文介绍了Web API路由值在操作执行过滤器时为空的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在对控制器操作使用自定义操作过滤器.
I am using a custom action filter on my controller action.
我的控制器动作是这样的:
My controller action is like this:
[HttpPost]
[Route("listener")]
[MyAttr]
public IHttpActionResult Listener([FromBody]Parameters request)
{
return Ok();
}
我想从操作过滤器访问 Route("listener")
值.
I want to access Route("listener")
values from action filter.
public class MyAttr: ActionFilterAttribute
{
public async override Task OnActionExecutedAsync(HttpActionExecutedContext actionExecutedContext, CancellationToken cancellationToken)
{
var route = actionExecutedContext.ActionContext.RequestContext.RouteData;
}
}
但是RouteData值集合没有项目.如何获取路线值?
But RouteData values collection has no items. How can access route value?
我的配置是这样的:
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 }
);
}
}
推荐答案
请在您的 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 链接就是那个.
这篇关于Web API路由值在操作执行过滤器时为空的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文