private static IWebHost BuildWebHost(string[] args) { var defaultConfig = new ConfigurationBuilder() .AddCommandLine(args) .AddEnvironmentVariables(prefix: "ASPNETCORE_") .Build(); var port = defaultConfig.GetValue("port", 5000); var connectionString = defaultConfig.GetValue("ConnectionString", ""); return(WebHost.CreateDefaultBuilder(args) .ConfigureKestrel(serverOptions => { serverOptions.Limits.MaxRequestBodySize = 100 * 1024 * 1024; // 100Mb }) .UseUrls($"http://0.0.0.0:{port}") // .UseIISIntegration() .ConfigureAppConfiguration((hostContext, config) => { Log.LogEvent("Delete all default configuration providers"); // delete all default configuration providers config.Sources.Clear(); config.SetBasePath(hostContext.HostingEnvironment.ContentRootPath); var filePath = Path.Combine(hostContext.HostingEnvironment.ContentRootPath, "connection.json"); if (!File.Exists(filePath)) { ConnectionStringManager.CreateDefault(filePath); } if (!string.IsNullOrEmpty(connectionString)) { ConnectionStringManager.CreateWithConnectionString(filePath, connectionString); } config.AddJsonFile("connection.json", optional: true, reloadOnChange: true); var mainSettings = ConnectionStringManager.Read(filePath); _defaultConnectionString = mainSettings?.ConnectionStrings?.DefaultConnection; config.AddEfConfiguration(_defaultConnectionString); EnabledPlugins = PluginHelper.GetPlugins(_defaultConnectionString); DisabledPlugins = PluginHelper.GetDisablePlugins(_defaultConnectionString); var contextFactory = new BaseDbContextFactory(); if (_defaultConnectionString != "...") { using var dbContext = contextFactory.CreateDbContext(new[] { _defaultConnectionString }); foreach (var plugin in EnabledPlugins) { var pluginEntity = dbContext.EformPlugins .FirstOrDefault(x => x.PluginId == plugin.PluginId); if (pluginEntity != null && !string.IsNullOrEmpty(pluginEntity.ConnectionString)) { plugin.AddPluginConfig(config, pluginEntity.ConnectionString); } } } config.AddEnvironmentVariables(); }) .UseStartup <Startup>() .Build()); }