I'm creating an ASP.net Core 2.0 app to run on the .net Core 2.0 runtime, both currently in their Preview versions. However, I cannot figure out how to have Kestrel use something other than the default http://localhost:5000
listen URL.
Most documentation that I could Google talks about a server.urls
setting, which seems to have been changed even in 1.0-preview to just be urls
, however neither works (turning on Debug logging has Kestrel telling me that no listen endpoints are configured).
A lot of documentation also talks about a hosting.json
and that I can't use the default appsettings.json. However, if I compare the recommended approach of loading a new config, this looks pretty much exactly like what the new WebHost.CreateDefaultBuilder
method does, except that it loads appsettings.json.
I currently don't understand how appsettings.json and IConfigureOptions<T>
are related, if at all, so it's possible that my trouble stems from a lack of understanding of what KestrelServerOptionsSetup
actually does.
I got it working with this
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseConfiguration(new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("hosting.json", optional: true)
.Build()
)
.UseStartup<Startup>()
.Build();
And the hosting.json
{ "urls": "http://*:5005;" }
Works for me as it used to be
WebHost.CreateDefaultBuilder(args)
.UseConfiguration( new ConfigurationBuilder().AddCommandLine(args).Build() )
.UseStartup<Startup>()
.Build();
Then
dotnet myapp.dll --urls "http://*:5060;"
None of the above worked for me. This one worked for me:
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseKestrel(options =>
{
options.Listen(System.Net.IPAddress.Loopback, 44306, listenOptions =>
{
listenOptions.UseHttps("mysertificate.pfx", "thecertificatePassword");
});
})
.Build();
(Change the 44306 to a port of your own liking)
And there might be a lot of help in this StackOverflow answer
To set listen URLs in appsettings.json, add "Kestrel" section:
"Kestrel": {
"EndPoints": {
"Http": {
"Url": "http://localhost:5000"
}
}
}
Reference: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-2.2