Как добавить не синглтон в рабочую службу DotNet Core 3.0? - PullRequest
0 голосов
/ 17 октября 2019

Я написал службу Windows, используя новую рабочую службу в dotNetCore 3.0

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/windows-service?view=aspnetcore-3.0&tabs=visual-studio#app-configuration

Я сейчас пытаюсь добавить некоторые службы. Один, в частности, для ведения журнала с использованием Sentry.

В глубине Add он имеет временную службу (SentryClient)

.ConfigureLogging(loggerFactory =>
    loggerFactory.AddSentry(configuration["logging:sentry:dsn"]));

Когда я пытаюсь запустить его, я получаю это исключение:

InvalidOperationException: невозможно разрешить службу для типа 'SharpRaven.IRavenClient' при попытке активировать 'MyServiceName'.

Как добавить службы, которые не являются одноэлементными?

Я читал об этом раньше, но сейчас не могу найти статью. Нужно ли создавать фабрику

РЕДАКТИРОВАТЬ: Вот это Create Host Builder

        public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureServices((hostContext, services) =>
                {
                    // The worker class
                    services.AddHostedService<Worker>();

                    var cronExpression = configuration[ActiveDirectoryJobConstants.CronExpression];

                    // Add Quartz services
                    services.AddSingleton<IJobFactory, SingletonJobFactory>();
                    services.AddSingleton<ISchedulerFactory, StdSchedulerFactory>();
                    services.AddSingleton<QuartzHostedService>();

                    // Add our job
                    services.AddSingleton<SyncWithActiveDirectoryJob>();
                    services.AddSingleton(new JobScheduleDto(typeof(SyncWithActiveDirectoryJob), cronExpression));

                    services.AddSingleton<ILdapConnector, LdapConnector>();
                    services.AddUserServiceClient(configuration);
                    services.AddSentryClient(
                        configuration["logging:sentry:dsn"],
                        hostContext.HostingEnvironment.EnvironmentName);

                })
        .ConfigureLogging(loggerFactory =>
                loggerFactory.AddSentry(configuration["logging:sentry:dsn"]));
...