2016-05-10 1 views
1

Web APIプロジェクト内のカスタムアクションフィルタ内でRouteTemplateにアクセスしたいとします。カスタムアクションフィルタ内のWeb APIアクセスルートテンプレート

以下のように、アクションの前に実行するカスタムアクションフィルタを登録しました。

public class AuthorizationFilter : ActionFilterAttribute 
{ 
     public override void OnActionExecuting(HttpActionContext filterContext) 
     { 

     } 
} 

下記の画像でわかるように、フィルタ内のクイックウォッチからルートテンプレートにアクセスできます。しかし、私は同じコードを記述する場合、それはエラーをスロー'System.Web.Http.WebHost.Routing.HttpWebRoute' is inaccessible due to its protection level

ルートテンプレート

プロパティにアクセスするための他の方法があります使用:(((System.Web.Http.WebHost.Routing.HttpWebRoute)(HttpContext.Current.Request.RequestContext.RouteData.Route)).HttpRoute).RouteTemplate

enter image description here

答えて

1

を。これは、それが動作する方法です。

public override void OnActionExecuting(HttpActionContext filterContext) 
{ 
     if (Settings.GetKeyValue<string>("EnableAuthorization") == "Enabled") 
     { 
      var routeTemplate = filterContext.Request.GetRouteData().Route.RouteTemplate; 
     } 
} 
関連する問題