波斯马BOSSMA Information Technology

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

发布时间:2018年2月25日 / 分类:ASP.NET, DOTNET / 7,387 次浏览 / 评论

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版本解决,当前的类中已经增加相关代码:

https://github.com/aspnet/MetaPackages/blob/dev/src/Microsoft.AspNetCore/WebHost.cs#L191

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

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自波斯马,原文地址《使用启动命令参数设置Kestrel的监听端口

关键字:

建议订阅本站,及时阅读最新文章!
【上一篇】 【下一篇】

发表评论