如何在 netcore3.1 中通过环境变量更改 Kestrel (AspNetCore) 监听端口
How can I change Kestrel (AspNetCore) listening port by environment variables in netcore3.1
我有 aspnetcore3.1 项目,我想为 Kestrel 设置自定义端口(默认 5000 除外)。我可以通过添加
在 Program.cs
中做到这一点
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureKestrel(options =>
{
options.ListenLocalhost(80);
});
webBuilder.UseStartup<Startup>();
})
但这不适用于我的情况,所以想知道,这怎么可以通过环境变量来完成?
有多种方法可以实现此目的as documented here。
- ASPNETCORE_URLS environment variable.
- --urls command-line argument.
- urls host configuration key.
- UseUrls extension method.
要使用环境变量实现此目的,只需创建一个名为 ASPNETCORE_URLS
的环境变量并将值设置为您想要使用的 URL
通常是 http://+:<port>
或 https://+:<port>
在撰写此答案时,上面未描述的另一种方法是通过 hostsettings.json 文件。
您可以通过创建 hostsettings.json 配置文件并添加 urls
键来配置 URL 和端口,然后将 hostsettings.json 添加到您的 IConfigurationBuilder
在构建 WebHostBuilder
.
时
这是来自 link 的代码片段,以防这个 link 死掉。
创建包含 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>();
}
}
我有 aspnetcore3.1 项目,我想为 Kestrel 设置自定义端口(默认 5000 除外)。我可以通过添加
在Program.cs
中做到这一点
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.ConfigureKestrel(options =>
{
options.ListenLocalhost(80);
});
webBuilder.UseStartup<Startup>();
})
但这不适用于我的情况,所以想知道,这怎么可以通过环境变量来完成?
有多种方法可以实现此目的as documented here。
- ASPNETCORE_URLS environment variable.
- --urls command-line argument.
- urls host configuration key.
- UseUrls extension method.
要使用环境变量实现此目的,只需创建一个名为 ASPNETCORE_URLS
的环境变量并将值设置为您想要使用的 URL
通常是 http://+:<port>
或 https://+:<port>
在撰写此答案时,上面未描述的另一种方法是通过 hostsettings.json 文件。
您可以通过创建 hostsettings.json 配置文件并添加 urls
键来配置 URL 和端口,然后将 hostsettings.json 添加到您的 IConfigurationBuilder
在构建 WebHostBuilder
.
这是来自 link 的代码片段,以防这个 link 死掉。
创建包含 urls
键和您的值的 hostsettings.json 文件
{
urls: "http://*:5005"
}
在您的 IConfigurationBuilder
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>();
}
}