在我的设置类,我有以下代码(使用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 –