Asp.net-Mvc

如何通過 netcore3.1 中的環境變數更改 Kestrel (AspNetCore) 偵聽埠

  • January 21, 2021

我有 aspnetcore3.1 項目,我想為 Kestrel 設置自定義埠(預設 5000 除外)。我可以Program.cs通過添加來做到這一點

Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
   webBuilder.ConfigureKestrel(options =>
   {
       options.ListenLocalhost(80);
   });
   webBuilder.UseStartup<Startup>();
})

但這不適用於我的情況,所以想知道,環境變數如何做到這一點?

如本文所述,有多種方法可以實現此目的。

  1. ASPNETCORE_URLS 環境變數。
  2. –urls 命令行參數。
  3. urls 主機配置密鑰。
  4. UseUrls 擴展方法。

要使用環境變數實現此目的,只需創建一個名為的環境變數ASPNETCORE_URLS並將值設置為您要使用的 URL

通常這將是http://+:<port>https://+:<port>

在撰寫此答案時,上面未描述的另一種方法是通過 hostsettings.json 文件。

您可以通過創建 hostsettings.json 配置文件並添加urls密鑰來配置 URL 和埠,然後IConfigurationBuilder在建構WebHostBuilder.

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/host/web-host?view=aspnetcore-3.1#override-configuration

這是連結中的程式碼片段,以防此連結失效。

創建您的 hostsettings.json 文件,其中包含urls帶有您的值的鍵

{
   urls: "http://*:5005"
}

在你的註冊 hostsettings.jsonIConfigurationBuilder

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

   public static IWebHostBuilder CreateWebHostBuilder(string[] args)
   {
       var config = new ConfigurationBuilder()
           .SetBasePath(Directory.GetCurrentDirectory())
           .AddJsonFile("appsettings.json", optional: false)
           .AddJsonFile("hostsettings.json", optional: true)
           .AddCommandLine(args)
           .Build();

       return WebHost.CreateDefaultBuilder(args)
           .UseUrls("http://*:5000")
           .UseConfiguration(config)
           .UseStartup<Startup>();
   }
}

引用自:https://stackoverflow.com/questions/60152009