Führen Sie die asynchrone Operation asp.net mvc außerhalb der Aktion aus

Ich möchte in der Lage sein, bei jeder Anfrage einen Benutzer aus einer Cloud-Datenbank zu laden und diesen bei der Anfrage in einem Controller mit asp.net mvc verfügbar zu haben. Das Problem ist, dass das aktuelle Framework keine asynchronen Operationen von Aktionsfiltern unterstützt. OnActionExecuting, OnAuthorization-Methoden ermöglichen mir dies nicht. Ich habe beispielsweise den folgenden Code, der NICHT funktioniert (also probieren Sie es nicht aus) Operation stand noch aus. "

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

Gibt es also eine andere Möglichkeit, dies zu tun? Ich stelle fest, dass es im Basis-Controller eine Methode zum Ausführen des Starts gibt:

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

Könnte ich es dort möglicherweise tun?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage