找不到任何构造函数都可以使用可用的服务和参数Autofac进行调用

时间:2016-03-28 17:36:22

标签: asp.net asp.net-mvc asp.net-identity autofac autofac-module

我的阅读和编码遵循示例: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();
    }
}

任何人都请帮帮我!

1 个答案:

答案 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();