Я внедряю авторизацию FilterAttribute для контроллера WebAPI, но у меня нет доступа к параметрам, которые передаются в контроллер: < /p>
В MVC4 это работает нормально: < /p>
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")
/// ...
}
}
< /code>
Но в webapi, я думаю, параметр должен быть в действии, но «парамет» здесь пуст: < /p>
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"]
/// ...
}
}
< /code>
Параметр, который передается в контроллер, доступен где -то еще? (Я подтвердил, что действие контроллера правильно получает значение идентификатора при удалении атрибута фильтра.)
Подробнее здесь: https://stackoverflow.com/questions/147 ... -are-empty