Using appsettings.json to configure Kestrel listen port Dotnet core 2 preview 2

As mentioned in a comment on the accepted answer, 2.1 has support for appsettings.json, see https://blogs.msdn.microsoft.com/webdev/2018/02/02/asp-net-core-2-1-roadmap/#security

A working appsettings.json:

"Kestrel": {
  "EndPoints": {
    "Http": {
      "Url": "http://localhost:5555"
    }
  }
}

This is for a Program.cs using (created by "dotnet new webapi"):

WebHost.CreateDefaultBuilder(args)

Relevant source code in GitHub https://github.com/aspnet/MetaPackages/blob/master/src/Microsoft.AspNetCore/WebHost.cs#L163

options.Configure(builderContext.Configuration.GetSection("Kestrel"));

and https://github.com/aspnet/MetaPackages/blob/master/src/Microsoft.AspNetCore/WebHost.cs#L169

config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)

Support for Kestrel configuration via appsettings.json has been dropped in 2.0.

See this issue comment:

kestrel config file support was cut from 2.0.0. Config values need to be read manually in your initialization code.

To get around this, you can do something like this in program.cs:

public static IWebHost BuildWebHost(string[] args) =>
 WebHost.CreateDefaultBuilder(args)
 .UseStartup < Startup > ()
 .UseKestrel((hostingContext, options) => 
 { 
  if (hostingContext.HostingEnvironment.IsDevelopment) {
   options.Listen(IPAddress.Loopback, 9001);
   options.Listen(IPAddress.Loopback, 9002, listenOptions => {
    listenOptions.UseHttps("certificate.pfx", "password");
   });
  }
 })
 .Build();