想要通過命令行方式運行ASP.NET Core,指定運行的端口號,該怎么做呢?
兩種方法:
第一種方法:通過配置文件指定端口
1.添加一個json配置文件,一般命名為 host.json,也可以使用默認配置文件 appsettings.json
添加配置項,多個端口可以通過分號(;)隔開。
"server.urls": "http://*:5025;http://*:5026"
2.修改 Program.cs 的 Main 方法,定義 ConfigurationBuilder 對象。
public class Program { public static void Main(string[] args) { var config = new ConfigurationBuilder() .AddJsonFile("appsettings.json", optional: true) .Build(); CreateWebHostBuilder(args) .UseConfiguration(config) .Build() .Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>(); }
第二種方法:通過運行時參數指定端口號
1.添加引用:Microsoft.Extensions.Configuration.CommandLine
2.修改 Program.cs 的 Main 方法,定義 ConfigurationBuilder 對象。
public class Program { public static void Main(string[] args) { var config = new ConfigurationBuilder() .AddCommandLine(args) .Build(); CreateWebHostBuilder(args) .UseConfiguration(config) .Build() .Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>(); }
3.運行時指定參數:dotnet AspnetDockerTest.dll --server.urls "http://*:5005;http://*:5006"
思考:
指定運行端口號並不是我的目的,我在考慮,通過第二種,指定運行時參數來啟動服務的方式,我們可以對一個aspnet core程序啟動多個服務實例,只要端口號不同就行,這樣是不是更方便集群部署呢。