Единственное переопределение, которое я вижу на MVC AuthorizeAttribute
, - это public override void OnAuthorization( AuthorizationContext filterContext )
, которое не подходит для использования с async/await, потому что оно не возвращает Task
. Есть ли другой способ создать AuthorizeAttribute
в MVC, который позволяет использовать async/wait?
Можно ли использовать async/wait в MVC 4 AuthorizeAttribute?
Ответ 1
ASP.NET MVC сегодня не поддерживает асинхронные фильтры. Проголосуйте.
Однако ASP.NET "vNext" , объявленный на TechEd на этой неделе, будет поддерживать асинхронные фильтры для MVC.
Ответ 2
С выпуском ядра asp.net ответ Стивена Клири правильный и идеальный способ пойти, если вы используете последнее ядро asp.net.
Для тех, кто еще не обновился, мне удалось обойти мою проблему, используя async HttpModule, который передает состояние в AuthorizationFilter через HttpContext.Items
. Я добавил более подробно о моем решении здесь - http://evandontje.com/2017/08/15/solutions-for-async-await-in-mvc-action-filters/