在我的設置類,我有以下代碼(使用Autofac和Visual Studio中的MVC的Web API模板)在Startup.Auth類MVC的Web API AutoFac依賴注入
builder.RegisterType<CRMUserStore<IdentityUser>>().As<IUserLoginStore<IdentityUser>>()
.InstancePerRequest();
然後,我有以下
UserManagerFactory =() => new UserManager<IdentityUser>(
DependencyResolver.Current.GetService<IUserLoginStore<IdentityUser>>());
這將返回null。後來,當我嘗試,取代上述
UserManagerFactory =() => new UserManager<IdentityUser>(
_container.Resolve<IUserLoginStore<IdentityUser>>()); //_container is IContainer
我得到一個錯誤說
型「Autofac.Core.DependencyResolutionException」發生在Autofac.dll的一個例外,但在用戶代碼中沒有處理
附加信息:從請求實例的作用域看不到具有與「AutofacWebRequest」匹配的標記的作用域。這通常表示按照Single-HTTP請求註冊的組件正在通過SingleInstance()組件(或類似的場景)請求。在Web集成下,始終請求DependencyResolver.Current或ILifetimeScopeProvider.RequestLifetime的依賴關係,而不是從容器本身。
我該如何解決這個問題?
後,我註冊Autofac當我嘗試DependencyResolver.Current.GetType()。ToString()我得到 「System.Web.Mvc.DependencyResolver + DefaultDependencyResolver」它不應該是Autofac? – user3547774
看起來您正在使用默認的Asp.Net Mvc依賴項解析器:http://msdn.microsoft.com/en-us/library/system.web.mvc.dependencyresolver(v=vs.118).aspx。您需要使用Asp.Net Mvc註冊AutoFac,如下所示:https://code.google.com/p/autofac/wiki/MvcIntegration –