При инициализации Aspnetboilerplate AppService и Repository возникает ошибка. NET Core Worker Service - PullRequest
1 голос
/ 17 июня 2020

Мы используем фреймворк Aspnetboilerplate с. NET Core 3.1 и уже создали классы Entity (EF Core управляет базой данных) и службы приложений. Этот механизм работает идеально, и мы можем извлекать и сохранять данные из наших клиентских приложений.

Мы инициировали проект. NET Core Worker Service для разработки фоновой службы. Эта служба требуется для подключения к платформе Aspnetboilerplate, чтобы мы могли подключаться к базе данных. Однако пока ни одна попытка не увенчалась успехом. Вот подробности того, что мы пробовали:

Платформа :. NET Core 3.1 Тип проекта :. NET Core Worker Service Ссылочные проекты : Application и EntityFramework (указано 2 проекта)

Основная функция в Program.cs

public static void Main(string[] args)
{
            using (var bootstrapper = AbpBootstrapper.Create<TxnParsingModule>())
            {
                bootstrapper.Initialize();                
            }

            CreateHostBuilder(args).Build().Run();
}

AbpModule Инициализация выполнена:

[DependsOn(
        typeof(MViewCoreModule),
        typeof(MViewEntityFrameworkModule),
        typeof(MViewApplicationModule),
        typeof(AbpZeroCoreModule)
)]
public class TxnParsingModule : AbpModule
{
        public override void Initialize()
        {
            IocManager.RegisterAssemblyByConvention(typeof(TxnParsingModule).GetAssembly());
        }
}

После инициализации хоста Для фонового рабочего класса у нас есть класс TransactionJob , который фактически требует ссылки AppService через внедрение конструктора следующим образом:

public class TransactionJob : IJob, ITransientDependency
    {
        //public IRepository<AtmInfo, long> atmRepository;
        //public TransactionJob(IRepository<AtmInfo, long> _atmRepository)
        //{
        //    this.atmRepository = _atmRepository;
        //}

        public IAtmInfoAppService atmService;
        public TransactionJob(IAtmInfoAppService _atmService)
        {
            this.atmService = _atmService;
        }

        public Task Execute(IJobExecutionContext context)
        {
            return Task.CompletedTask;
        }
    }

Приведенный выше код дает следующую ошибку при инициализации:

Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: Microsoft.Extensions.Hosting.IHostedService Lifetime: Singleton ImplementationType: MView.TxnParsingService.Worker': Unable to resolve service for type 'Abp.Domain.Repositories.IRepository`2[MView.Core.Models.AtmInfo,System.Int64]' while attempting to activate 'MView.TxnParsingService.Worker'.)

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

InvalidOperationException: Error while validating the service descriptor 'ServiceType: Microsoft.Extensions.Hosting.IHostedService Lifetime: Singleton ImplementationType: MView.TxnParsingService.Worker': Unable to resolve service for type 'Abp.Domain.Repositories.IRepository`2[MView.Core.Models.AtmInfo,System.Int64]' while attempting to activate 'MView.TxnParsingService.Worker'.

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

InvalidOperationException: Unable to resolve service for type 'Abp.Domain.Repositories.IRepository`2[MView.Core.Models.AtmInfo,System.Int64]' while attempting to activate 'MView.TxnParsingService.Worker'.
...