Autofac - La portée de vie de la requête ne peut pas être créée car HttpContext n'est pas disponible - en raison du code asynchrone?

Petite Question: Même que ce problème sans réponse

Longue Question:

J'ai juste porté un peu de code d'un MVC 4 + Api Web solution qui a été à l'aide de Autofac dans ma nouvelle solution qui est également à l'aide de Autofac mais seulement avec l'Api Web 2 (pas de MVC 5.1 projet, juste une api web).

Dans ma solution précédente, j'ai eu MVC4 et Web Api, donc j'ai eu 2 programme d'Amorçage.cs fichiers, un pour chaque. J'ai copié sur le Web Api programme d'amorçage pour le nouveau projet.

Maintenant j'ai 2 autres projets de la nouvelle solution qui ont besoin de tirer une dépendance. Permet de considérer que je dois utiliser DependencyResolver.Current.GetService<T>() malgré qu'il soit un anti-modèle.

Au début, ce n'était pas de travailler jusqu'à ce que j'ai mis le MVC Solveur de Dépendances pour le même conteneur:

GlobalConfiguration.Configuration.DependencyResolver = 
     new AutofacWebApiDependencyResolver(container);

//I had to pull in Autofac.Mvc and Mvc 5.1 integration but this line fixed it
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

La partie étrange est, le faire seul, il fixe dans l'UN de ces projets! Voici la situation:

 Solution.Web project
      Bootstrapper.cs that registers both dependency resolvers for web api and mvc.

 Solution.ClassLib project
      var userRepo = DependencyResolver.Current.GetService<IUserRepo>(); //Good! :)

 Solution.WindowsWorkflow project
      var userRepo = DependencyResolver.Current.GetService<IUserRepo>(); //Throws exception :(

L'exception est la suivante:
La demande durée de vie étendue ne peut pas être créé car le HttpContext n'est pas disponible.

Maintenant, avant de commencer à blâmer le flux de travail, il suffit de savoir j'ai eu exactement ce set up fonctionne très bien dans une autre solution, le flux de travail a été en mesure d'utiliser DependencyResolver l'amende juste. Je crois que cela a à voir avec l'aide d'une version plus récente de Autofac et le fait que le flux de travail s'exécute de façon asynchrone (tout comme la question que j'ai lié à concernant async code)

J'ai essayé de passer le code d'enregistrement à utiliser InstancePerLifetimeScope() au lieu de InstancePerHttpRequest() et essayer de créer un champ d'application:

using (var c= AutofacDependencyResolver.Current
                     .ApplicationContainer.BeginLifetimeScope("AutofacWebRequest"))
{
   var userRepo = DependencyResolver.Current.GetServices<IUserRepo>();
}

Mais elle na pas changer l'exception. Briser le code de descendre encore plus bas voila exactement le coupable:

var adr = AutofacDependencyResolver.Current; //Throws that exception 

Vraiment besoin pour obtenir passé ce passé trop de temps coincé. Récompense de réponse existant avec bounty en 2 jours

source d'informationauteur parliament