.NET Core 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.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.Identity.AppUser]' может быть вызван с доступными службами и параметрами: Невозможно разрешить параметр 'Microsoft.AspNetCore.Identity.IUserStore 1[WAM4.WebAPI.Infrastructure.Identity.AppUser] store' of constructor 'Void .ctor(Microsoft.AspNetCore.Identity.IUserStore 1 [WAM4.WebAPI.Infrastructure.Identity.AppUser], Microsoft.Extensions.Options.IOptions 1[Microsoft.AspNetCore.Identity.IdentityOptions], Microsoft.AspNetCore.Identity.IPasswordHasher 1 [WAM4.WebAPI.Infrastructure.Identity.AppUser System.Collections.Generic.IEnumerable 1[Microsoft.AspNetCore.Identity.IUserValidator 1 [WAM4.WebAPI.Infrastructure.Identity.AppUser]], System.Collections.Generic.IEnumerable 1[Microsoft.AspNetCore.Identity.IPasswordValidator WebAPI.Infrastructure.Identity.AppUser]], Mi crosoft.AspNetCore.Identity.ILookupNormalizer, Microsoft.AspNetCore.Identity.IdentityErrorDescriber, System.IServiceProvider, Microsoft.Extensions.Logging.ILogger 1[Microsoft.AspNetCore.Identity.UserManager 1 [WAM4.WebAPI. ».

Это мои 2 модуля, которые вставляют "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 правильно зарегистрирован в Load, и что класс AppUser правильно скомпилирован. Будем весьма благодарны за любые указания относительно того, в какую область мне следует обратиться, чтобы устранить это исключение.

Всего 2 ответа


Точно сложно без вашей регистрации точно сказать, но похоже, что вы пропускаете регистрацию IUserStore в своем контейнере. Можете ли вы проверить, что оно зарегистрировано, например, выполнив решение после всех регистраций?

Так как это универсальный интерфейс IUserStore<TUser> , возможно, что вы не зарегистрируете правильную универсальную версию в WAM4.WebAPI.Infrastructure.Identity.AppUser


Хорошо, я понял, что я делаю не так.

Я опустил код JWTToken из шаблона Startup.cs, потому что я еще не дошел до этой части. Большая ошибка, провел весь день, думая, что это другая проблема ... Сделал мой startup.cs таким же, как шаблон, которому я следовал (включая весь код JWT и код аутентификации) ... и BAM, легко исправить. Потребовалось всего 8 часов, чтобы понять, что я делаю не так.

Спасибо, Илья, за попытку помочь, очень ценю это.