前言
.NET 會紅的一部份很大原因是因為終於實現了跨平台
而原先相依於 IIS 的 HttpServer 也因為跨平台而改採用較小的 Kestrel
也是可以託管給IIS: 詳細參考
而會寫這篇最大的原因還是因為,使用了微軟官方的 DockerImage 進行包裝後,發現都還是 Kestrel 都只會吃到 80 Port
而網路上爬了一些文,後來找到官方說明綁定的以下幾種方式
- No configuration
- 預設為
http:localhost:5000&https:localhost:5001
- 使用系統環境變數
- 使用
ASPNETCORE_URLS來決定使用的Port
Docker 設定的預設為80,導致此次會發生此問題
- 使用參數來決定
- 使用
dotnet XXX.dll --urls http://+:1234
- 寫死在程式碼中(不推薦)
webBuilder.UseKestrel((context, serverOptions) =>
{
serverOptions.Configure(context.Configuration.GetSection("Kestrel"))
.Endpoint("HTTPS", listenOptions =>
{
listenOptions.HttpsOptions.SslProtocols = SslProtocols.Tls12;
});
});


