Могу ли я установить 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 ответа:
Я получил его, работая с этим
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