How can I change Kestrel (AspNetCore) listening port by environment variables in netcore3.1
There are multiple ways to achieve this as documented here.
- ASPNETCORE_URLS environment variable.
- --urls command-line argument.
- urls host configuration key.
- UseUrls extension method.
To achieve this using an environment variable, simply create an environment variable called ASPNETCORE_URLS
and set the value to the URL you'd like to use
Typically this would be http://+:<port>
or https://+:<port>
Another method which, at the time of writing this answer, isn't described above is via the hostsettings.json file.
You can configure the URL & Port by creating a hostsettings.json configuration file and adding the urls
key, then add hostsettings.json to your IConfigurationBuilder
when building your WebHostBuilder
.
Here is the code snippet from the link, in case this link ever goes dead.
Create your hostsettings.json file containing the urls
key with your value(s)
{
urls: "http://*:5005"
}
Register hostsettings.json in your 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>();
}
}
Comments
-
shaderzak almost 2 years
I have aspnetcore3.1 project, and I want to set custom port for Kestrel (other than default 5000). I can possibly do it in
Program.cs
by addingHost.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.ConfigureKestrel(options => { options.ListenLocalhost(80); }); webBuilder.UseStartup<Startup>(); })
But this cannot be applied to my case, so wondered, how can this be done by environment variable?