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? –