5

InstancePerHttpRequestスコープを持つコンポーネントを登録した ASP.NET MVC アプリケーションがあります。

builder.RegisterType<Adapter>().As<IAdapter>().InstancePerHttpRequest();

次に、Adapter コンポーネントを解決する非同期コードがあります。

次のコードは簡略化されています

Task<HttpResponseMessage> t = Request.Content.ReadAsMultipartAsync(provider).ContinueWith(t =>

      // IHandleCommand<T> takes an IAdapter as contructor argument
      var h = DependencyResolver.Current.GetServices<IHandleCommand<T>>();
);

上記のコードは例外をスローしています。The request lifetime scope cannot be created because the HttpContext is not available.

だから私は主題についていくつかの調査を行い、この答えを見つけました https://stackoverflow.com/a/8663021/1003222

次に、解決コードをこれに調整しました

 using (var c= AutofacDependencyResolver.Current.ApplicationContainer.BeginLifetimeScope(x => x.RegisterType<DataAccessAdapter>().As<IDataAccessAdapter>).InstancePerLifetimeScope()))
 {
       var h = DependencyResolver.Current.GetServices<IHandleCommand<T>>();
 }

しかし、例外は同じままでした。The request lifetime scope cannot be created because the HttpContext is not available.

何か不足していますか?

4

4 に答える 4

4

次のようなことを試すことができます:

using (var c= AutofacDependencyResolver.Current
                                       .ApplicationContainer
                                       .BeginLifetimeScope("AutofacWebRequest"))
{
   var h = DependencyResolver.Current.GetServices<IHandleCommand<T>>();
}
于 2013-08-16T00:38:16.580 に答える