WebApi コントローラーの AuthorizationFilterAttribute を実装していますが、コントローラーに渡されるパラメーターにアクセスできないようです。
MVC4 では、これは正常に機能します。
public class MyMVCController : Controller
{
[CanAccessMyResourceApi]
public MyViewModel Get(int id)
{
//...
}
}
public class CanAccessMyResourceMVCAttribute : CanAccessAttributeBase
{
public override void OnAuthorization(AuthorizationContext filterContext)
{
var param = filterContext.Controller.ValueProvider.GetValue("id")
/// ...
}
}
しかし、WebAPI では、パラメーターは ActionArguments にあるはずだと思いますが、ここの「param」は空です:
public class MyWebApiController : ApiController
{
[CanAccessMyResourceWebApi]
public MyViewModel Get(int id)
{
//...
}
}
public class CanAccessMyResourceWebApiAttribute : AuthorizationFilterAttribute
{
public override void OnAuthorization(HttpActionContext filterContext)
{
// the debugger shows that ActionArguments is empty:
var param = filterContext.ActionArguments["id"]
/// ...
}
}
コントローラーに渡されるパラメーターは別の場所で使用できますか? (フィルター属性を削除すると、コントローラーのアクションが Id 値を正しく取得していることを確認しました。)