WebApi AuthorizationFilterAttribute: ActionArguments пусты. ⇐ C#
-
Anonymous
WebApi AuthorizationFilterAttribute: ActionArguments пусты.
Я реализую атрибут AuthorizationFilterAttribute для контроллера WebApi, но, похоже, у меня нет доступа к параметрам, которые передаются в контроллер:
В MVC4 это работает нормально:
публичный класс MyMVCController: Контроллер { [CanAccessMyResourceApi] общедоступный MyViewModel Get (int id) { //... } } открытый класс CanAccessMyResourceMVCAttribute: CanAccessAttributeBase { общедоступное переопределение void OnAuthorization (AuthorizationContext filterContext) { var param = filterContext.Controller.ValueProvider.GetValue("id") /// ... } } Но в WebAPI я думаю, что параметр должен быть в ActionArguments, но здесь «param» пуст:
публичный класс MyWebApiController: ApiController { [CanAccessMyResourceWebApi] общедоступный MyViewModel Get (int id) { //... } } открытый класс CanAccessMyResourceWebApiAttribute: AuthorizationFilterAttribute { общедоступное переопределение void OnAuthorization (HttpActionContext filterContext) { // отладчик показывает, что ActionArguments пуст: var param = filterContext.ActionArguments["id"] /// ... } } Доступен ли параметр, передаваемый в контроллер, где-то еще? (Я проверил, что действие контроллера правильно получает значение идентификатора, когда я удаляю атрибут фильтра.)
Я реализую атрибут AuthorizationFilterAttribute для контроллера WebApi, но, похоже, у меня нет доступа к параметрам, которые передаются в контроллер:
В MVC4 это работает нормально:
публичный класс MyMVCController: Контроллер { [CanAccessMyResourceApi] общедоступный MyViewModel Get (int id) { //... } } открытый класс CanAccessMyResourceMVCAttribute: CanAccessAttributeBase { общедоступное переопределение void OnAuthorization (AuthorizationContext filterContext) { var param = filterContext.Controller.ValueProvider.GetValue("id") /// ... } } Но в WebAPI я думаю, что параметр должен быть в ActionArguments, но здесь «param» пуст:
публичный класс MyWebApiController: ApiController { [CanAccessMyResourceWebApi] общедоступный MyViewModel Get (int id) { //... } } открытый класс CanAccessMyResourceWebApiAttribute: AuthorizationFilterAttribute { общедоступное переопределение void OnAuthorization (HttpActionContext filterContext) { // отладчик показывает, что ActionArguments пуст: var param = filterContext.ActionArguments["id"] /// ... } } Доступен ли параметр, передаваемый в контроллер, где-то еще? (Я проверил, что действие контроллера правильно получает значение идентификатора, когда я удаляю атрибут фильтра.)
Мобильная версия