Как аутентифицировать и регистрировать пользователей из бизнес-уровня Logi c с ASP. NET Core 3.1 Identity - PullRequest
0 голосов
/ 11 января 2020

Пожалуйста, мой вопрос не может быть конструктивным, но я все еще учусь, поэтому любезно помогите.

Я проектирую 3-уровневую архитектуру с do tnet core 3.1 mvc, Visual Studio 2019. Я хочу использовать только одно подключение к базе данных на уровне доступа к данным и аутентифицировать пользователей, используя Identity из Бизнес логи c слой. То есть:

Строка подключения находится на уровне доступа к данным, и я хочу настроить службу через расширенный IServiceCollectionExtension.

public static class IServiceCollectionExtension
{
    public static IServiceCollection AddDALDependenciesLibraries(this IServiceCollection services)
    {
        services.AddScoped<IUnitOfWork, UnitOfWork>();
        services.AddScoped<ICoursesBL, CoursesBL>();
        services.AddScoped<IStudentsBL, StudentBL>();
        services.AddIdentity<IdentityUser, IdentityRole>).AddEntityFrameworkStores<GooddbContext>();

        return services;
    }
}

И запустить его в файле startup.cs, как

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContextPool<GooddbContext>(
            options => options.UseSqlServer(Configuration.GetConnectionString("EmployeeDBConnection")));
        services.AddDALDependenciesLibraries();
        services.AddControllersWithViews();
    }

Но если я запускаю приложение, оно выдает эту ошибку ниже:

System.AggregateException HResult = 0x80131500 Сообщение = Некоторые службы не могут быть созданы (Ошибка при проверке дескриптор службы 'ServiceType: TestCoreApp.BLL.BusinessLogi c .Interfaces.ICoursesBL Время жизни: область применения Тип реализации: TestCoreApp.BLL.BusinessLogi c .CoursesBL': невозможно разрешить службу для типа «AutoMapper.IMapper» при попытке активации 'TestCoreApp.BLL.BusinessLogi c .CoursesBL'.) (Ошибка при проверке дескриптора службы 'ServiceType: TestCoreApp.BLL.BusinessLogi c .Interfaces.IStudentsBL Срок службы: Тип реализации Scoped: TestCoreApp.BLL.BusinessLogi c. StudentBL ': невозможно разрешить службу для типа' AutoMapper.IMa pper 'при попытке активировать' TestCoreApp.BLL.BusinessLogi c .StudentBL '.) Source = Microsoft.Extensions.DependencyInjection StackTrace: в Microsoft.Extensions.DependencyInjection.ServiceProvider..ctor (IEnumerable 1 serviceDescriptors, ServiceProviderOptions options) at Microsoft.Extensions.DependencyInjection.ServiceCollectionContainerBuilderExtensions.BuildServiceProvider(IServiceCollection services, ServiceProviderOptions options) at Microsoft.Extensions.DependencyInjection.DefaultServiceProviderFactory.CreateServiceProvider(IServiceCollection containerBuilder) at Microsoft.Extensions.Hosting.Internal.ServiceFactoryAdapter 1.CreateServiceProvider (Object containerBuilder) в Microsoft.Extensions.Hosting.HostBuilder.CreateServiceProvider () в Microsoft.Extensions.Hosting.HostBuilder.Build () в TestCoreApp.UI.Program.Main (String [] args) в C: \ Users \ verky \ source \ repos \ TestCoreApp \ TestCoreApp.UI \ Program.cs: строка 16

Это исключение было первоначально сгенерировано в этом стеке вызовов:

Microsoft.Extensions.DependencyInjection. ServiceLookup.CallSiteFactory.CreateArgumentCallSites (System.Type, System.Type, Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain, System.REFlection.ParameterInfo [], bool) DependencyInjection.ServiceLook up.ResultCache, System.Type, System.Type, Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain) Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact (Microsoft.Extensions.DependencyInyoror. DependencyInjection.ServiceLookup.CallSiteChain, Int) Microsoft.Extensions.DependencyInjection.ServiceDescriptor)

Внутреннее исключение 1:

InvalidOperationException: Ошибка при проверке дескриптора службы 'ServiceType: TestCoreApp.BLL.BusinessLogi c. Interfaces.ICoursesBL Время жизни: объем реализации, тип: TestCoreApp.BLL.BusinessLogi c .CoursesBL ': Una Чтобы разрешить службу для типа «AutoMapper.IMapper» при попытке активировать «TestCoreApp.BLL.BusinessLogi c .CoursesBL».

Внутреннее исключение 2:

InvalidOperationException: невозможно разрешить службу для типа «AutoMapper.IMapper» при попытке активировать «TestCoreApp.BLL.BusinessLogi c .CoursesBL».

1 Ответ

0 голосов
/ 11 января 2020

// Этот метод вызывается во время выполнения. Используйте этот метод для добавления служб в контейнер.

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContextPool<GooddbContext>(
        options => options.UseSqlServer(Configuration.GetConnectionString("EmployeeDBConnection")));
    services.AddDALDependenciesLibraries();
    services.AddControllersWithViews();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...