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

2018-02-27 10:48:45来源:http://blog.bossma.cn/dotnet/use-command-line-set-kestrel-li作者:BOSSMA'S BLOG人点击

分享

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应用指定端口了。


最新文章

123