In Dotnet Core 2.0 the Startup-constructor only expects a IConfiguration-parameter.
public Startup(IConfiguration configuration) { Configuration = configuration; }
How to read hosting environment there? I store it in Program-class during ConfigureAppConfiguration (use full BuildWebHost instead of WebHost.CreateDefaultBuilder):
public class Program { public static IHostingEnvironment HostingEnvironment { get; set; } public static void Main(string[] args) { // Build web host var host = BuildWebHost(args); host.Run(); } public static IWebHost BuildWebHost(string[] args) { return new WebHostBuilder() .UseConfiguration(new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("hosting.json", optional: true) .Build() ) .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .ConfigureAppConfiguration((hostingContext, config) => { var env = hostingContext.HostingEnvironment; // Assigning the environment for use in ConfigureServices HostingEnvironment = env; // <--- config .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true); if (env.IsDevelopment()) { var appAssembly = Assembly.Load(new AssemblyName(env.ApplicationName)); if (appAssembly != null) { config.AddUserSecrets(appAssembly, optional: true); } } config.AddEnvironmentVariables(); if (args != null) { config.AddCommandLine(args); } }) .ConfigureLogging((hostingContext, builder) => { builder.AddConfiguration(hostingContext.Configuration.GetSection("Logging")); builder.AddConsole(); builder.AddDebug(); }) .UseIISIntegration() .UseDefaultServiceProvider((context, options) => { options.ValidateScopes = context.HostingEnvironment.IsDevelopment(); }) .UseStartup<Startup>() .Build(); }
Ant then reads it in ConfigureServices like this:
public IServiceProvider ConfigureServices(IServiceCollection services) { var isDevelopment = Program.HostingEnvironment.IsDevelopment(); }
IHostingEnvironmentjust be injected into ConfigureServices? oversight? or a reason we need to be aware of?