Выполнить асинхронную операцию asp.net mvc вне действия

Я хочу иметь возможность загружать пользователя из облачной базы данных при каждом запросе и иметь это доступным по запросу в контроллере с использованием asp.net mvc. Проблема в том, что текущая структура не поддерживает выполнение асинхронных операций из фильтров действий. Итак, методы OnActionExecuting, OnAuthorization не позволяют мне сделать это .. например, у меня есть следующий код, который НЕ РАБОТАЕТ (поэтому не пытайтесь это сделать) .. Вы получаете исключение: «Асинхронный модуль или обработчик завершены во время асинхронного операция еще не завершена ".

protected async override void OnAuthorization(AuthorizationContext filterContext)
{
  var user = filterContext.HttpContext.User;
  if (!user.Identity.IsAuthenticated)
  {
    HandleUnauthorizedRequest(filterContext);
    return;
  }

  using (var session = MvcApplication.DocumentStore.OpenAsyncSession())
  {
    User currentUser = await session.LoadAsync<User>(user.Identity.Name);
    if (currentUser == null)
    {
      HandleUnauthorizedRequest(filterContext);
      return;
    }

    filterContext.HttpContext.Items["User"] = currentUser;
  }
}

Так есть ли другой способ сделать это? Я заметил, что в базовом контроллере есть метод begin execute:

protected override IAsyncResult BeginExecute(RequestContext requestContext, AsyncCallback callback, object state)
{
  return base.BeginExecute(requestContext, callback, state);
}

Могу ли я сделать это там, возможно?

Ответы на вопрос(1)

Ваш ответ на вопрос