Kestrel 是一個跨平台的適用於 ASP.NET Core 的 Web 服務器,內置在ASP.NET Core 項目中。我們使用vs2019新建一個ASP .Net Core 應用程序,可以在launchSettings.json看到Kestrel默認的地址"https://localhost:5001;http://localhost:5000",
下面我們來了解 自定義Kestrel 服務器端口的幾種方式。
1、修改launchSettings.json中的applicationUrl地址
也可以項目右鍵-->屬性-->調試-->web服務器設置 修改 應用URL
2、使用命令行
需要在啟動程序Program.cs構建主機方法CreateHostBuilder中加AddCommandLine(args) ,代碼:
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureAppConfiguration(builder => { builder.AddCommandLine(args); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
然后命令行到對應dll所在文件夾
dotnet xxxx.dll --urls "http://*:5100"//可以多個也可以一個 多個以;隔開 如 "http://*:5100;http://*:5101"

或者項目根目錄
dotnet run --urls "http://*:5100"
3、代碼里UseUrls
在ConfigureWebHostDefaults中設置啟動默認值
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseUrls("http://*:5101"); webBuilder.UseStartup<Startup>(); });
直接Kestrel運行程序,或者命令運行
4、使用配置文件
在appsettings.json里添加設置 "urls": "http://*:5102"
然后啟動時使用這個配置文件的配置
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureAppConfiguration(builder => { builder.AddJsonFile("appsettings.json", optional: true); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
把這幾種方式都配置好,
使用命令行,會優先使用命令行的urls參數,不帶urls參數的時候會使用UseUrls中配置的端口地址,如果沒有配置端口則會使用配置文件
這三種方式配置,優先級是
使用命令行>UseUrls>json配置文件>launchSettings applicationUrl
