使用启动命令参数设置Kestrel的监听端口

来源:转载

Kestrel的默认端口是5000,如果要启动多个站点,就得区分端口了,指定端口有多种方式:编写代码、appsettings.json配置、启动命令参数等。这里将介绍使用启动命令参数的方式。


还是以guid.fireflysoft.net为例,语法为:


/usr/bin/dotnet /home/wwwroot/guid.fireflysoft.net/GetGuidWeb.dll --server.urls "http://localhost:5001"

但是这会报错,提示5000端口被占用,我们指定的新端口没有生效。


这是因为.net core 2.0中WebHost.CreateDefaultBuilder的实现没有在IWebHostBuilder上使用命令行参数。


这个问题可能在下个.net core版本解决,当前的类中已经增加相关代码:



/2014th7cj/d/file/p/20180227/WebHost.cs if (args != null)
{
builder.UseConfiguration(new ConfigurationBuilder().AddCommandLine(args).Build());
}

但是现在release的.net core版本中没有这行代码,只能自己应用程序中先加上了:


public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}

public static IWebHost BuildWebHost(string[] args)
{
var iweb = WebHost.CreateDefaultBuilder(args);

if (args != null)
iweb.UseConfiguration(new ConfigurationBuilder().AddCommandLine(args).Build()); // 下一个正式版本将不需要

return iweb.UseStartup<Startup>().Build();
}
}

现在可以方便的为不同asp.net core应用指定端口了。


分享给朋友:
您可能感兴趣的文章:
随机阅读: