Могу ли я установить URL-адреса прослушивания в appsettings.json в ASP.net предварительный просмотр ядра 2.0?


Я создаю ASP.net ядро 2.0 приложение для запуска в среде выполнения .net Core 2.0, оба в настоящее время в их предварительных версиях. Однако я не могу понять, как заставить Kestrel использовать что-то другое, кроме стандартного http://localhost:5000 listen URL.

Большая часть документации, которую я мог бы гуглить, говорит о настройке server.urls, которая, кажется, была изменена даже в 1.0-preview, чтобы просто быть urls, однако ни то, ни другое не работает (включив ведение журнала отладки, Kestrel говорит мне, что нет конечных точек прослушивания сконфигурированный).

Во многих документах также говорится о hosting.json и о том, что я не могу использовать стандартные настройки приложений.формат JSON. Тем не менее, если сравнить рекомендуемый подход загрузки нового конфигурационного файла, то он выглядит примерно так же, как и новый WebHost.CreateDefaultBuilder метод делает, за исключением того, что он загружает appsettings.формат JSON.

В настоящее время я не понимаю, как appsettings.json и IConfigureOptions<T> связаны, если вообще связаны, так что, возможно, моя проблема связана с отсутствием понимания того, что KestrelServerOptionsSetup вообще-то да.

3 5

3 ответа:

Я получил его, работая с этим

public static IWebHost BuildWebHost(string[] args) => 
        WebHost.CreateDefaultBuilder(args)
            .UseConfiguration(new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("hosting.json", optional: true)
                .Build()
            )
            .UseStartup<Startup>()
            .Build();

И хостинг.json

{ "urls": "http://*:5005;" }

Работает для меня, как это было раньше

WebHost.CreateDefaultBuilder(args)
    .UseConfiguration( new ConfigurationBuilder().AddCommandLine(args).Build() )
    .UseStartup<Startup>()
    .Build();

Затем

dotnet myapp.dll --urls "http://*:5060;"

Ничего из вышеперечисленного на меня не подействовало. Это сработало для меня:

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();

(измените 44306 на порт по своему вкусу)

И может быть много помощи в этом ответе StackOverflow