Верхняя полка с Autofa c не вызывает Start () на ServiceControl - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь создать службу Windows с использованием Autofa c и Topshelf в. NET Core 3.1 проекте. Я новичок в использовании обоих, и, наконец, дошел до того, что я был готов к тестированию. Однако, когда приложение запускается в Debug, оно запускается и завершается сразу же, не затрагивая ни одной строки метода Start в моем ServiceControl. Никаких исключений, никакого вывода на консоль (кроме стандартного кода завершения), ничего, что я вижу, не помогает понять, почему он не вызывается. Я предполагаю, что это ошибка в том, как я регистрирую свои сервисы в Autofa c, но было бы здорово, если бы я мог видеть выставленное исключение или действительно любую информацию, которая поможет объяснить. Вот мой звонок HostFactory.Run от Program.cs:

HostFactory.Run(c =>
{
    c.UseAutofacContainer(container);

    c.SetServiceName("MyServiceName");
    c.SetDisplayName("MyService Display Name");
    c.SetDescription("My service's description.");

    c.UseSerilog();
    c.StartAutomatically();
    c.RunAsLocalSystem();
    c.Service<MyService>(s =>
    {
        s.ConstructUsingAutofacContainer();
        s.WhenStarted((service, control) => service.Start(control));
        s.WhenStopped((service, control) => service.Stop(control));
    });
});

А вот код, отвечающий за создание контейнера Autofa c:

var configModule = new ConfigurationModule(config);
var builder = new ContainerBuilder();

builder.RegisterModule(configModule);
builder.RegisterType<MyService>();
builder.RegisterType<MySettingsService>().AsSelf();

// Some other interfaces and self-registered services here.

builder.Register(c =>
{
    var settings = c.Resolve<MySettingsService>();
    return new DatabaseContext(settings.DbConnectionString);
}).AsSelf().SingleInstance();

Стоит отметить, что MySettingsService имеет зависимость от IConfiguration в своем конструкторе. Насколько я понимаю, это обеспечивается модулем ConfigurationModule, но, опять же, я новичок в обеих этих платформах.

...