.NET Core Web API激活时引发了一个例外



在向我的Web API发送POST请求时,我会得到以下异常:

autofac.core.core.sportencyResolutionException:抛出一个例外 激活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.UserManager 1 [WAM4.WEBAPI.INFRASTRUCTURE.SIDENTITY.APPUSER]''' 可以使用可用的服务和参数调用: 无法解析参数'Microsoft.aspnetcore.Identity.ISSERSTORE 1[WAM4.WebAPI.Infrastructure.Identity.AppUser] store' of constructor 'Void .ctor(Microsoft.AspNetCore.Identity.IUserStore 1 [WAM4.WEBAPI.INFRASTRUCTURE.SIDENTITY.APPUSER], microsoft.extensions.options.ioptions 1[Microsoft.AspNetCore.Identity.IdentityOptions], Microsoft.AspNetCore.Identity.IPasswordHasher 1 [wam4.webapi.infrastructure.Identity.Appuser], System.Collections.generic.Generic.1[Microsoft.AspNetCore.Identity.IUserValidator 1 [WAM4.WEBAPI.INFRASTRUCTURE.IDENTITY.APPUSER]],],], System.Collections.generic.Generic.1[Microsoft.AspNetCore.Identity.IPasswordValidator 1 [WAM4.WEBAPI.INFRASTRUCTURE.SIDENTITY.APPUSER],],],], Microsoft.aspnetcore.Identity.ilookupNormalizer, Microsoft.aspnetcore.Identity.IdentityErrordescriber, System.iserviceProvider, microsoft.extensions.logging.ilogger 1[Microsoft.AspNetCore.Identity.UserManager 1 [wam4.webapi.infrastructure.Identity.Appuser]]('。

这些是我的两个模块,它们将" build(("加入容器和appuser类:

    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,并且适当地编译了Appuser类。关于我应该考虑解决此例外的任何领域的任何指导,都将不胜感激。

如果没有您的注册,请确切说明,这有点困难,但是看来您缺少容器中IUserStore的注册。您能否验证它已注册,例如执行所有注册后进行解决?

由于它是一个通用接口IUserStore<TUser>,您是否可能不用WAM4.WebAPI.Infrastructure.Identity.AppUser

注册正确的通用版本

好吧,我弄清楚了我做错了什么。

我从模板startup.cs省略了JWTToken代码,因为我还没有进入该部分。大错误,整天都认为这是一个不同的问题...使我的startup.cs与我所关注的模板相同(包括所有JWT和身份验证代码(...和BAM,Easy Fix。只花了整整8个小时才能弄清楚我做错了什么。

感谢Llya试图提供帮助,非常感谢。

相关内容

最新更新