webconfig net ioptions asp c# asp.net-core kestrel

c# - ioptions - Acceso al nombre del entorno en Program.Main en ASP.NET Core



net core web config (2)

Creo que la solución más sencilla es leer el valor de la variable de entorno ASPNETCORE_ENVIRONMENT y compararlo con EnvironmentName.Development :

var environment = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT"); var isDevelopment = environment == EnvironmentName.Development;

Usando ASP.NET Mvc Core, necesitaba configurar mi entorno de desarrollo para que usara https, así que agregué lo siguiente al método Main en Program.cs:

var host = new WebHostBuilder() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .UseKestrel(cfg => cfg.UseHttps("ssl-dev.pfx", "Password")) .UseUrls("https://localhost:5000") .UseApplicationInsights() .Build(); host.Run();

¿Cómo puedo acceder al entorno de alojamiento aquí para poder configurar de forma condicional el protocolo / número de puerto / certificado?

Idealmente, solo usaría el CLI para manipular mi entorno de alojamiento de esta forma:

dotnet run --server.urls https://localhost:5000 --cert ssl-dev.pfx password

pero no parece haber una manera de usar un certificado desde la línea de comandos.


Esta es mi solución (escrita para ASP.NET Core 2.1):

public static void Main(string[] args) { var host = CreateWebHostBuilder(args).Build(); using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; var hostingEnvironment = services.GetService<IHostingEnvironment>(); if (!hostingEnvironment.IsProduction()) SeedData.Initialize(); } host.Run(); }