66 votes

Accéder au nom de l'environnement dans Program.Main dans ASP.NET Core

À l'aide de ASP.NET Mvc Base je devais définir mon environnement de développement pour utiliser le protocole https, donc j'ai ajouté ci-dessous pour l' Main méthode dans le Programme.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();

Comment puis-je accéder à l'environnement d'hébergement ici afin que je puisse conditionnellement définir le protocole/port/certificat?

Idéalement, je voudrais juste utiliser la CLI de manipuler mon environnement d'hébergement comme suit:

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

mais il ne semble pas être un moyen d'utiliser un certificat à partir de la ligne de commande.

135voto

Henk Mollema Points 3951

Je pense que la solution la plus simple est de lire la valeur de la variable d'environnement ASPNETCORE_ENVIRONMENT et de la comparer avec EnvironmentName.Development :

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

20voto

HamedH Points 696

Voici ma solution (écrite pour 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();
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X