Kestrel デフォルトのエンドポイントのままセルフホストしてハマった

Kestrel のエンドポイントは、デフォルトだと http://localhost:5000;https://localhost:5001。デフォルトのままでいいやと、Windows Server 2016 の VMWindows サービスとしてセルフホストしたら、VM 外からアクセスできなくてハマった。

VM 内から http://localhost:5000http://127.0.0.1:5000 ならアクセスできた。http://VMのプライベートIPアドレス:5000 だとアクセスできない。

UseUrls メソッドか --urls コマンドライン引数で、http://*:5000;https://*:5001 を指定する必要があったようだ。WCF だと localhost で上手くいっていたので、まったく怪しまなかった。こんな初歩的なことでハマるとは…。いつも ASP.NET Core アプリのホストは App Service ばっかりだったので、App Service がいかに至れり尽くせりなのかを実感した。