Can I set listen URLs in appsettings.json in ASP.net Core 2.0 Preview?

24,578

Solution 1

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;" }

Solution 2

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

Solution 3

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;"

Solution 4

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

Share:
24,578
Henry
Author by

Henry

Updated on July 09, 2022

Comments

  • Henry
    Henry almost 2 years

    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.

  • Henry
    Henry almost 7 years
    Thank you. I misunderstood that CreateDefaultBuilder uses ConfigureAppConfiguration to load appsettings.json, which is different from UseConfiguration.
  • liqSTAR
    liqSTAR about 3 years
    Does it affect deployment on a server instance? How is the priority or order if I also set an ASPNETCORE_URLS in my service config?
  • John Sivertsen
    John Sivertsen almost 3 years
    Looks like ASPNETCORE_URLS (environment variable) has higher precedence than appsettings.json - See devblogs.microsoft.com/premier-developer/…
  • tolache
    tolache over 2 years
    I'm using .NET 5 and when I create a new MVC app there isn't a hosting.json file. Should I create it or is this an outdated way of settings the URLs?
  • Joey Guerra
    Joey Guerra over 2 years
    Worked for me too. Thank you. I wanted Kestrel to use a dynamic port and then I wanted to programmatically get that port. "Url": "http://*:0" did it.