web-dev-qa-db-ja.com

ASP.NET CoreのProgram.Mainのアクセス環境名

ASP.NET Mvc Coreを使用して、httpsを使用するように開発環境を設定する必要があったため、Program.csのMainメソッドに以下を追加しました。

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

しかし、コマンドラインから証明書を使用する方法はないようです。

39
Mike Lunn

最も簡単な解決策は、ASPNETCORE_ENVIRONMENT環境変数と EnvironmentName.Development

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

これは私のソリューションです(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