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