0

以下のASP.NET Core Mainメソッドでは、ホスティング環境をどのようにして判断することができますか?HTTPS用に異なる証明書ファイルを切り替えるにはどうすればよいですか? KestrelとUseHttpsを設定する際のホスティング環境の決定

public sealed class Program 
{ 
    public static void Main(string[] args) 
    { 
     new WebHostBuilder() 
      .UseContentRoot(Directory.GetCurrentDirectory()) 
      .UseKestrel(
       options => 
       { 
        if ([Development Hosting Environment]) 
        { 
         options.UseHttps("DevelopmentCertificate.pfx"); 
        } 
        else 
        { 
         options.UseHttps("ProductionCertificate.pfx"); 
        } 
       }) 
      .UseIISIntegration() 
      .UseStartup<Startup>() 
      .Build() 
      .Run(); 
    } 
} 

アップデートは、私は、次のGitHub issueを提起しました。

+0

私はあなたがそれを設定メソッド – Alexan

答えて

2

を私はこれを試したし、動作するようには思えなかったが、あなたは二重チェックするwan'tかもしれませんそれはあなたがそうのようなIHostingEnvironmentのホールドを取得するためにConfigureServicesを使用することができ判明します。

public sealed class Program 
{ 
    public static void Main(string[] args) 
    { 
     IHostingEnvironment hostingEnvironment = null; 
     new WebHostBuilder() 
      .UseContentRoot(Directory.GetCurrentDirectory()) 
      .ConfigureServices(
       services => 
       { 
        hostingEnvironment = services 
         .Where(x => x.ServiceType == typeof(IHostingEnvironment)) 
         .Select(x => (IHostingEnvironment)x.ImplementationInstance) 
         .First(); 
       }) 
      .UseKestrel(
       options => 
       { 
        if (hostingEnvironment.IsDevelopment()) 
        { 
         // Use a self-signed certificate to enable 'dotnet run' to work in development. 
         options.UseHttps("DevelopmentCertificate.pfx", "password"); 
        } 
       }) 
      .UseIISIntegration() 
      .UseStartup<Startup>() 
      .Build() 
      .Run(); 
    } 
} 
0

...

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     var config = new ConfigurationBuilder() 
         .AddEnvironmentVariables() 
         .Build(); 

     var pfx = config["ASPNETCORE_ENVIRONMENT"].Equals("Development", StringComparison.CurrentCultureIgnoreCase) 
      ? "DevelopmentCertificate.pfx" 
      : "ProductionCertificate.pfx"; 

     var host = new WebHostBuilder() 
      .UseKestrel(options => 
      { 
       options.UseHttps(pfx); 
      }) 
      .UseContentRoot(Directory.GetCurrentDirectory()) 
      .UseIISIntegration() 
      .UseStartup<Startup>() 
      .Build(); 

     host.Run(); 
    } 
}