【问题标题】:How can I change Kestrel (AspNetCore) listening port by environment variables in netcore3.1如何通过 netcore3.1 中的环境变量更改 Kestrel (AspNetCore) 侦听端口
【发布时间】:2020-05-25 20:47:34
【问题描述】:

我有 aspnetcore3.1 项目,我想为 Kestrel 设置自定义端口(默认 5000 除外)。我可以在Program.cs 中添加

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

但这不适用于我的情况,所以想知道,如何通过环境变量来完成?

【问题讨论】:

    标签: asp.net-mvc asp.net-core kestrel-http-server asp.net-core-3.1 kestrel


    【解决方案1】:

    有多种方法可以实现这一点as documented here

    1. ASPNETCORE_URLS 环境变量。
    2. --urls 命令行参数。
    3. urls 主机配置键。
    4. UseUrls 扩展方法。

    要使用环境变量实现此目的,只需创建一个名为 ASPNETCORE_URLS 的环境变量并将值设置为您要使用的 URL

    通常是http://+:&lt;port&gt;https://+:&lt;port&gt;

    在撰写此答案时,上面未描述的另一种方法是通过 hostsettings.json 文件。

    您可以通过创建 hostsettings.json 配置文件并添加 urls 键来配置 URL 和端口,然后在构建 WebHostBuilder 时将 hostsettings.json 添加到您的 IConfigurationBuilder

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

    这是链接中的代码 sn-p,以防此链接失效。

    使用您的值创建包含 urls 键的 hostsettings.json 文件

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

    在你的IConfigurationBuilder注册hostsettings.json

    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>();
        }
    }
    

    【讨论】:

    • --URLs 参数适用于 Ubuntu 上的 .NET 3.1,tnx。
    • @Soren 值得记住的是,这仅在将 args 传递给 CreateDefaultBuilder 时才有效,如果您发现自己在重构/清理后停止工作的情况下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    相关资源
    最近更新 更多