我的阅读和编码遵循示例:http://timschreiber.com/2015/01/14/persistence-ignorant-asp-net-identity-with-patterns-part-1/ 但是这个例子使用了Unity for DI,但我使用了Autofac for ID,当我尝试运行我的项目时,我有以下错误:
没有任何构造函数与' Autofac.Core.Activators.Reflection.DefaultConstructorFinder'在类型上 ' App.Front.Controllers.HomeController'可以用。调用 可用的服务和参数:无法解析参数 ' {Microsoft.AspNet.Identity.UserManager {1}} 2 [IdentityStore.IdentityUser,的System.Guid])'
我的代码:
2[IdentityStore.IdentityUser,System.Guid]
userManager' of constructor 'Void
.ctor(Microsoft.AspNet.Identity.UserManager
和
public class IdentityModule : Module
{
protected override void Load(ContainerBuilder builder)
{
//var dbContextParameter = new ResolvedParameter((pi, ctx) => pi.ParameterType == typeof(DbContext),
// (pi, ctx) => ctx.Resolve<AppContext>());
builder.RegisterType<UserStore>().As<IUserStore<IdentityUser, Guid>>().InstancePerLifetimeScope();
builder.RegisterType<RoleStore>().InstancePerLifetimeScope();
}
}
任何人都请帮帮我!
答案 0 :(得分:1)
错误消息告诉您 Autofac 无法创建HomeController
的实例,因为它无法找到其Microsoft.AspNet.Identity.UserManager<IdentityStore.IdentityUser,System.Guid>
userManager
参数。
似乎此类型尚未注册。要解决此错误,您必须注册UserManager<IdentityUser, Guid>
。您可以在IdentityModule
课程中执行此操作:
builder.RegisterType<UserManager<IdentityUser, Guid>>()
.As<UserManager<IdentityUser, Guid>>()
.InstancePerRequest();