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应用指定端口了。
发表评论
相关文章
国内AI资源汇总,AI聊天、AI绘画、AI写作、AI视频、AI设计、AI编程、AI音乐等,国内顺畅访问,无需科学上网。
扫码或点击进入:萤火AI大全
文章分类
最新评论