web-dev-qa-db-fra.com

Nom de l'environnement d'accès dans Program.Main dans ASP.NET Core

En utilisant ASP.NET Mvc Core, je devais configurer mon environnement de développement pour utiliser https. J'ai donc ajouté ce qui suit à la méthode Main dans 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();

Comment puis-je accéder à l'environnement d'hébergement ici afin de pouvoir définir de manière conditionnelle le protocole/le numéro de port/le certificat?

Idéalement, j'utiliserais simplement la CLI pour manipuler mon environnement d'hébergement de la manière suivante:

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

mais il ne semble pas y avoir de moyen d'utiliser un certificat depuis la ligne de commande.

39
Mike Lunn

Je pense que la solution la plus simple est de lire la valeur du ASPNETCORE_ENVIRONMENT variable d’environnement et comparez-la avec EnvironmentName.Development :

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

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();
}
15
HamedH