Executar operação assíncrona asp.net mvc fora da ação

Eu quero ser capaz de carregar um usuário de um banco de dados em nuvem em cada solicitação e ter isso disponível na solicitação em um controlador usando asp.net mvc. O problema é que o framework atual não suporta fazer operações assíncronas de filtros de ação. Então OnActionExecuting, OnAuthorization métodos não me permitem fazer isso .. por exemplo, eu tenho o seguinte código que não funciona (por isso não tente) .. Você recebe uma exceção: "Um módulo assíncrono ou manipulador concluído enquanto um assíncrono a operação ainda estava pendente ".

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;
  }
}

Então, há alguma outra maneira de ser capaz de fazer isso? Eu notei que há um método begin execute no Controlador base:

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

Eu poderia fazer isso lá possivelmente?

questionAnswers(1)

yourAnswerToTheQuestion