public static IWebHostBuilder UseModularStartup <TStartup>(this IWebHostBuilder hostBuilder) where TStartup : class { return(hostBuilder // UserSecrets not loaded when using surrogate startup class, load explicitly from TStartup.Assembly .ConfigureAppConfiguration((ctx, config) => config.AddUserSecrets(typeof(TStartup).GetTypeInfo().Assembly, optional: true)) .UseStartup(ModularStartup.Create <TStartup>())); }
// Additional configuration is required to successfully run gRPC on macOS. // For instructions on how to configure Kestrel and gRPC clients on macOS, visit https://go.microsoft.com/fwlink/?linkid=2099682 public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.ConfigureKestrel(options => { options.ListenLocalhost(5000, listenOptions => { listenOptions.Protocols = HttpProtocols.Http2; }); }); webBuilder.UseStartup(ModularStartup.Create <Startup>()); });
public ModularStartupActivator(IConfiguration configuration) { Configuration = configuration; var ci = StartupType !.GetConstructor(new[] { typeof(IConfiguration) }); if (ci != null) { Instance = (ModularStartup)ci.Invoke(new[] { Configuration }); } else { ci = StartupType.GetConstructor(Type.EmptyTypes); if (ci != null) { Instance = (ModularStartup)ci.Invoke(TypeConstants.EmptyObjectArray); Instance.Configuration = configuration; } else { throw new NotSupportedException($"{StartupType.Name} does not have a {StartupType.Name}(IConfiguration) constructor"); } } }
public static void Main(string[] args) { ModularStartup.Init(typeof(Startup)); BuildWebHost(args).Run(); }