using System; using System.Collections.Generic; using System.IO; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; namespace HealthChecksSample { public class Program { private static readonly Dictionary _scenarios; static Program() { _scenarios = new Dictionary(StringComparer.OrdinalIgnoreCase) { { "", typeof(BasicStartup) }, { "basic", typeof(BasicStartup) }, { "writer", typeof(CustomWriterStartup) }, { "liveness", typeof(LivenessProbeStartup) }, { "port", typeof(ManagementPortStartup) }, { "db", typeof(DbHealthStartup) }, { "dbcontext", typeof(DbContextHealthStartup) }, }; } public static void Main(string[] args) { BuildWebHost(args).Run(); } public static IWebHost BuildWebHost(string[] args) { var config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appsettings.json") .AddEnvironmentVariables(prefix: "ASPNETCORE_") .AddCommandLine(args) .Build(); var scenario = config["scenario"] ?? string.Empty; if (!_scenarios.TryGetValue(scenario, out var startupType)) { startupType = typeof(BasicStartup); } return new WebHostBuilder() .UseConfiguration(config) .ConfigureLogging(builder => { builder.SetMinimumLevel(LogLevel.Trace); builder.AddConfiguration(config); builder.AddConsole(); }) .UseKestrel() .UseStartup(startupType) .Build(); } } }