Asp.Net Core Web API app: how to change listening address?

This is configured by Server urls host configuration

Indicates the IP addresses or host addresses with ports and protocols that the server should listen on for requests.
Key: urls
Type: string
Default: http://localhost:5000
Set using: UseUrls
Environment variable: ASPNETCORE_URLS

Set to a semicolon-separated (;) list of URL prefixes to which the server should respond.


It is also possible to set URL using command line arguments. For example:

dotnet run --urls=http://0.0.0.0:5001

but this doesn't work out of the box for old versions of ASP.NET Core (depends on whether this fix applied to used version or not).

A workaround for old versions based on fact that you always can set host settings directly via .UseConfiguration method:

var config = new ConfigurationBuilder().AddCommandLine(args).Build();

return WebHost.CreateDefaultBuilder(args)
        .UseConfiguration(config)

Note, the same idea may be used to read setting value from any other configuration source, like configuration file for example.


I'm using .NETCore 2.1 prev, so I haven't been able to test it myself but if I believe that https://www.billbogaiv.com/posts/setting-aspnet-host-address-in-net-core-2, adding .UseUrls(urls: "http://*:5000") might be instructing Kestrel to listen to port 5000 and not only on localhost, so it should work also on a remote server.

Other possible solution, UseKestrel(..) https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.1&tabs=aspnetcore2x using IPAddress.Any instead of Loopback.