現在、ASP.NET Core 2.xを使用していますが、以下のようにUseUrls()
メソッドに配置するだけで、KestrelでHTTPS/SSLを使用できるようになりました。
var Host = new WebHostBuilder()
.UseUrls("http://localhost", "https://111.111.111.111")
.UseKestrel()
.Build();
しかし、今私は例外を取得します:
System.InvalidOperationException:
HTTPS endpoints can only be configured using KestrelServerOptions.Listen().
ASP.NET Core 2.xでSSLを使用するようにKestrelを設定するにはどうすればよいですか?
サーバー/ Webホストに割り当てられたすべてのIPアドレスを使用するようにサーバーを関連付ける場合は、次の操作を実行できます。
WebHost.CreateDefaultBuilder(args)
.UseUrls("http://localhost:5000", "http://*:80")
.UseStartup<Startup>()
.Build();
注:UseUrls()
メソッドで使用される文字列形式はhttp://{ip address}:{port number}
です。
-IPアドレスに*
(アスタリスク)を使用する場合、それはホストで使用可能なすべてのIPアドレスを意味します。
-ポート番号は必須ではありません。空白のままにすると、デフォルトでポート80になります。
UseUrls()
メソッドについては、 公式のMicrosoftドキュメントはこちら 。に詳細が追加されています。
ただし、SSLは
UseUrls()
methodでは機能しません---つまり、https://
で始まるURLを追加しようとすると、プログラムは例外をスローしますSystem.InvalidOperationException: HTTPS endpoints can only be configured using KestrelServerOptions.Listen().
HTTPSエンドポイントは、KestrelServerOptions
を使用してのみ構成できます。
Listen
メソッドを使用してTCPソケットを使用する例を次に示します。
WebHost.CreateDefaultBuilder(args)
.UseKestrel(options =>
{
options.Listen(IPAddress.Loopback, 5000); // http:localhost:5000
options.Listen(IPAddress.Any, 80); // http:*:80
options.Listen(IPAddress.Loopback, 443, listenOptions =>
{
listenOptions.UseHttps("certificate.pfx", "password");
});
})
.UseStartup<Startup>()
.Build();
注:Listen
メソッドとUseUrls
の両方を使用する場合、Listen
エンドポイントはUseUrls
エンドポイントをオーバーライドします。
エンドポイントのセットアップに関する詳細情報を見つけることができます ここでは公式のMicrosoft Docs 。
IISを使用する場合、IISのURLバインディングは、
Listen
またはUseUrls
のいずれかを呼び出して設定したバインディングをオーバーライドします。詳細については、「 ASP.NETコアモジュールの概要 」を参照してください。