2017-07-08 17 views
0

を実行します。ウェブ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 } 
     ); 
    } 
} 
+0

そのないルートデータ、ルートデータはURLのみで供給することができると、あなたの方法は、http本体に供給されたデータを持っています。 – Igor

+0

はどうすればルート属性パラメータの「聞き手」にアクセスすることができますか? @bookmarker – barteloma

+0

あなたは、要求がに来ているURIにアクセスしたいですか? –

答えて

0

あなたWebApiConfig.csファイルに/{アクション}を追加してください:

私の構成はこのようなものです。

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ということにする/コントローラ/リスナーリンクになります。

関連する問題