Имя среды доступа в Program.Main в ASP.NET Core

Использование ASP.NET Mvc Core Мне нужно было настроить среду разработки для использования https, поэтому я добавил ниже метод Main в 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();

Как я могу получить доступ к среде хостинга здесь, чтобы я мог условно установить протокол/номер порта/сертификат?

В идеале я бы просто использовал CLI для управления моей средой размещения так:

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

но, похоже, не существует способа использовать сертификат из командной строки.

Ответы

Ответ 1

Я думаю, что самым простым решением является считывание значения из ASPNETCORE_ENVIRONMENT среды ASPNETCORE_ENVIRONMENT и сравнение его с EnvironmentName.Development:

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

Ответ 2

Это мое решение (написанное для 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();
}