var options = new WebApplicationOptions { Args = args, ContentRootPath = WindowsServiceHelpers.IsWindowsService() ? AppContext.BaseDirectory : default }; var builder = WebApplication.CreateBuilder(options); builder.Host.UseSystemd(); builder.Host.UseWindowsService(); builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory()); builder.Host.ConfigureDefaultAppConfiguration(args, (hostContext, config, env, path) => { config.AddJsonFile($"appsettings.services.json", true) .AddJsonFile("notify.json") .AddJsonFile($"notify.{env.EnvironmentName}.json", true) .AddJsonFile("elastic.json", true); }); builder.Host.ConfigureDefaultServices((hostContext, services, diHelper) => { services.AddHttpClient(); diHelper.RegisterProducts(hostContext.Configuration, hostContext.HostingEnvironment.ContentRootPath); if (!bool.TryParse(hostContext.Configuration["disable_elastic"], out var disableElastic)) { disableElastic = false; } if (!disableElastic) { services.AddHostedService(); diHelper.TryAdd(); diHelper.TryAdd(); //diHelper.TryAdd(); diHelper.TryAdd(); diHelper.TryAdd(); } services.AddHostedService(); diHelper.TryAdd(); services.AddHostedService(); diHelper.TryAdd(); diHelper.TryAdd(); services.AddHostedService(); diHelper.TryAdd(); services.AddHostedService(); diHelper.TryAdd(); diHelper.TryAdd(); diHelper.TryAdd(); diHelper.TryAdd(); diHelper.TryAdd(); diHelper.TryAdd(); diHelper.TryAdd(); services.AddAutoMapper(Assembly.GetAssembly(typeof(MappingProfile))); }); builder.Host.ConfigureContainer((context, builder) => { builder.Register(context.Configuration, true, false, "search.json", "feed.json"); }); builder.Host.ConfigureNLogLogging(); var startup = new BaseWorkerStartup(builder.Configuration); startup.ConfigureServices(builder.Services); var app = builder.Build(); startup.Configure(app); await app.RunAsync();