【发布时间】:2019-05-15 17:47:18
【问题描述】:
向我的 Web api 发送发布请求时出现以下异常:
Autofac.Core.DependencyResolutionException:抛出异常 在激活 WAM4.WebAPI.Core.UseCases.RegisterUserUseCase -> WAM4.WebAPI.Infrastructure.Data.Repositories.UserRepository -> Microsoft.AspNetCore.Identity.UserManager
1[[WAM4.WebAPI.Infrastructure.Identity.AppUser, WAM4.WebAPI.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]. ---> Autofac.Core.DependencyResolutionException: None of the constructors found with 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on type 'Microsoft.AspNetCore.Identity.UserManager1[WAM4.WebAPI.Infrastructure.Identity.AppUser]' 可以使用可用的服务和参数调用: 无法解析参数'Microsoft.AspNetCore.Identity.IUserStore1[WAM4.WebAPI.Infrastructure.Identity.AppUser] store' of constructor 'Void .ctor(Microsoft.AspNetCore.Identity.IUserStore1[WAM4.WebAPI.Infrastructure.Identity.AppUser], Microsoft.Extensions.Options.IOptions1[Microsoft.AspNetCore.Identity.IdentityOptions], Microsoft.AspNetCore.Identity.IPasswordHasher1[WAM4.WebAPI.Infrastructure.Identity.AppUser], System.Collections.Generic.IEnumerable1[Microsoft.AspNetCore.Identity.IUserValidator1[WAM4.WebAPI.Infrastructure.Identity.AppUser]], System.Collections.Generic.IEnumerable1[Microsoft.AspNetCore.Identity.IPasswordValidator1[WAM4.WebAPI.Infrastructure.Identity.AppUser]], Microsoft.AspNetCore.Identity.ILookupNormalizer, Microsoft.AspNetCore.Identity.IdentityErrorDescriber, System.IServiceProvider, Microsoft.Extensions.Logging.ILogger1[Microsoft.AspNetCore.Identity.UserManager1[WAM4.WebAPI.Infrastructure.Identity.AppUser]])'。
这些是我将“build()”放入容器和 AppUser 类的 2 个模块:
public class InfrastructureModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<UserRepository>().As<IUserRepository>().InstancePerLifetimeScope();
builder.RegisterType<JwtFactory>().As<IJwtFactory>().SingleInstance().FindConstructorsWith(new InternalConstructorFinder());
builder.RegisterType<JwtTokenHandler>().As<IJwtTokenHandler>().SingleInstance().FindConstructorsWith(new InternalConstructorFinder());
builder.RegisterType<TokenFactory>().As<ITokenFactory>().SingleInstance();
builder.RegisterType<JwtTokenValidator>().As<IJwtTokenValidator>().SingleInstance().FindConstructorsWith(new InternalConstructorFinder());
builder.RegisterType<Logger>().As<ILogger>().SingleInstance();
}
}
public class CoreModule : Module
{
protected override void Load(ContainerBuilder builder)
{
builder.RegisterType<RegisterUserUseCase>().As<IRegisterUserUseCase>().InstancePerLifetimeScope();
builder.RegisterType<LoginUseCase>().As<ILoginUseCase>().InstancePerLifetimeScope();
builder.RegisterType<ExchangeRefreshTokenUseCase>().As<IExchangeRefreshTokenUseCase>().InstancePerLifetimeScope();
}
}
using Microsoft.AspNetCore.Identity;
//using System;
//using System.ComponentModel.DataAnnotations;
namespace WAM4.WebAPI.Infrastructure.Identity
{
public class AppUser : IdentityUser
{
//Add additional profile data for application users by adding properties to this class
//[Required]
//[MaxLength(100)]
//public string FirstName { get; set; }
//[Required]
//[MaxLength(100)]
//public string LastName { get; set; }
////[Required]
////public byte SecurityLevel { get; set; }
//[Required]
//public DateTime CreateDate { get; set; }
//public int Pending { get; set; }
//public string Avatar { get; set; }
}
}
我检查了 UserRepository 是否在 Load 中正确注册,并且 AppUser 类已正确编译。任何关于我应该研究什么领域来解决这个异常的指导,将不胜感激。
【问题讨论】:
-
为了提高您获得高质量答案的机会,请确保您的问题包含MCVE。
标签: c# asp.net-core dependency-injection autofac