概要
ターミナルから「dotnet run」というコマンドでアプリを起動しようとしたら、このようなエラーが発生しました。
crit: Microsoft.AspNetCore.Server.Kestrel[0] Unable to start Kestrel. System.InvalidOperationException: HTTPS endpoints can only be configured using KestrelServerOptions.Listen().
Visual Studio や Visual Studio Code などから起動した時は、このようなエラーは発生せず、コマンドから起動する時だけ発生しました。
原因
このようなエラーが発生する原因は、ASP.NET Core のアプリのフロントエンドとなるKestrelというサーバの起動で、どのポートを使って起動すればいいのか分からなくなっているのが原因です。
そこで、Kestrelにどのポートを使って起動すればいいのか教えてあげます。
解決方法
Kestrelにポートを教えるには、環境変数を使うのが一番楽です。
ターミナルなどで「ASPNETCORE_URLS」に値を指定します。
LinuxやmacOSの場合はこのようにします。
export ASPNETCORE_URLS=http://*:5000
Windows の場合はこのようにします。
set ASPNETCORE_URLS=http://*:5000
「http://*:5000」のように、5000番のポートを開けています。
別なポートで通信したい場合は、数字を書き換えてください。
最後に
私の場合、このようなエラーが発生した原因として、ASP.NET Core 1.1 で作成したアプリをASP.NET Core 2.0 へ更新した際に、Program.cs の Mainメソッドを書き換えたことが原因だと考えています。
ASP.NET Core 1.1 では、デフォルトのポートがあったようですが、ASP.NET Core 2.0 ではデフォルトのポートの設定がなくなっているから、このようなエラーが発生したと考えています。