Я работаю с веб-приложением ASP.NET Core 1 RTM, и я обновляю настройку Kestrel до последних соглашений. Установка направлена на имеющей следующие источники server.urls
, от самого низкого до самого высокого приоритета:Источник конфигурации Json игнорируется в настройке Kestrel
- URL-адрес, установленный в
Program.Main()
коде (по умолчанию, например, для производства) - URL-адреса, установленного в
hosting.Development.json
(например, переопределить значение по умолчанию при разработке) - URL-набор переменных окружения (например, переопределить значение по умолчанию для постановки или другого производства окр.)
в соответствии с последними ссылками (например here on SO и here on Github), это ж Шляпа я получил в настоящее время:
ProjDir\Program.cs
:
public class Program
{
// Entry point for the application
public static void Main(string[] args)
{
const string hostingDevFilepath = "hosting.Development.json";
const string environmentVariablesPrefix = "ASPNETCORE_";
string currentPath = Directory.GetCurrentDirectory();
var hostingConfig = new ConfigurationBuilder()
.SetBasePath(currentPath)
.AddJsonFile(hostingDevFilepath, optional: true)
.AddEnvironmentVariables(environmentVariablesPrefix)
.Build();
System.Console.WriteLine("From hostingConfig: " +
hostingConfig.GetSection("server.urls").Value);
var host = new WebHostBuilder()
.UseUrls("https://0.0.0.0")
.UseConfiguration(hostingConfig)
.UseKestrel()
.UseContentRoot(currentPath)
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
ProjDir\hosting.Development.json
:
{
"server.urls": "http://localhost:51254"
}
Из командной строки, установив ASPNETCORE_ENVIRONMENT=Development
, это выход:
> dotnet run
Project Root (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation.
From hostingConfig: http://localhost:51254
info: AspNet.Security.OpenIdConnect.Server.OpenIdConnectServerMiddleware[0]
An existing key was automatically added to the signing credentials list: <<yadda yadda yadda>>
Hosting environment: Development
Content root path: <<my project root dir>>
Now listening on: https://0.0.0.0:443
Application started. Press Ctrl+C to shut down.
Мои expecte d будет вместо Now listening on: http://localhost:51254
. Значение URL-адресов правильно выбрано из источника JSON (согласно журналу консоли), но затем конфигурация Kestrel игнорирует это, даже если UseConfiguration
приходит послеUseUrls
.
Что мне не хватает? Спасибо за ваши предложения.
Что делать, если вы используете 'urls' как имя вместо' server.urls'? (https://github.com/aspnet/Hosting/blob/e7b8c3f90a781a55658b4245571c5bf5dac5e56e/src/Microsoft.AspNetCore.Hosting.Abstractions/WebHostDefaults.cs#L15) – Pawel
Я просто попробовал (повторно) добавить как 'UseUrls()', а затем установите 'urls' в источниках Json. Настройки из источника Json правильно подобраны! Два вопроса?Q1: этот документ еще где-то еще (кроме того, что он смотрит на код :)) Q2: как получилось, что если нет 'UseUrls', то работает даже' server.urls'? Tnx – superjos
Я считаю, что он автоматически подбирается, если он настроен. 'UseUrls' позволяет вам программировать URL-адреса. – Pawel