ASP.NET Core透過launchsettings.json設定port
{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:54339/",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_My_Environment": "1",
        "ASPNETCORE_DETAILEDERRORS": "1",
        "ASPNETCORE_ENVIRONMENT": "Staging"
      }
    },
    "Kestrel Staging": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_My_Environment": "1",
        "ASPNETCORE_DETAILEDERRORS": "1",
        "ASPNETCORE_ENVIRONMENT": "Staging"
      },
      "applicationUrl": "http://localhost:51997/"
    },
    "EnvironmentsSample": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Staging"
      },
      "applicationUrl": "http://localhost:54340/"
    }
  }
}
根據官方文件設定檔來看,
commandName可被設定為以下3種:
IISExpressIISProject(which launches Kestrel)
當執行dotnet run指令時會執行第一個 "commandName": "Project",
因此以目前設定會啟動 http://localhost:51997/
上圖第2行可以看到 Hosting environment被設定為 Staging
是因為launchSettings.json中設定的 ASPNETCORE_ENVIRONMENT
而ASPNETCORE_ENVIRONMENT在Configure中則是以IHostingEnvironment的型別傳入藉以判斷要執行的環境

ref:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments?view=aspnetcore-2.2