DEV Community

Discussion on: How to Host ASP.NET Core 3.1 Web Applications as Windows Service

Collapse
 
dn32 profile image
Marcelo Vieira de Souza
        HostStatic = CreateHostBuilder(args).Build();
        HostStatic.Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args)
    {
        var root = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);

        Console.WriteLine("Root: " + root);

        var builder = Host.CreateDefaultBuilder(args)
               .ConfigureLogging(logging =>
               {
                   logging
                   .ClearProviders()
                   .AddFilter("Microsoft", LogLevel.Error)
                   .AddFilter("System", LogLevel.Error);
               })
              .ConfigureWebHostDefaults(webBuilder =>
              {
                  webBuilder
                  .UseUrls(LocalHost)
                  .UseStartup<Startup>();
              });

        if (Utilitario.EhLinux())
            builder = builder.UseSystemd();
        else
            builder = builder.UseWindowsService();

        builder.ConfigureServices((hostContext, services) =>
          {
              services.AddHostedService<Worker>();
          });

        return builder;
    }
}


public class Worker : BackgroundService
{
    protected override Task ExecuteAsync(CancellationToken stoppingToken)
    {
        return Task.Run(() => { });
    }

    public override Task StopAsync(CancellationToken cancellationToken)
    {
        return base.StopAsync(cancellationToken);
    }
}