По умолчанию сервер Kestrel использует файл конфигурации hosting.json. Название менялось несколько раз в разных бета-версиях. Если вы используете сейчас project.jsonсо следующим "command"разделом
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
}
затем при запуске сервера из командной строки с помощью
dnx web
файл hosting.jsonбудет прочитан. Файл
{
"server.urls": "http://0.0.0.0:5000"
}
настроит сервер на прослушивание 5000 на каждом IP4-адресе. Конфигурация
{
"server.urls": "http://::5000;http://0.0.0.0:5000"
}
сообщит, что нужно прослушивать 5000 как по IP4, так и по IP6 адресу.
Можно указать альтернативные файлы конфигурации с помощью ASPNET_ENVпеременной среды использования или с помощью --config myconfig1.json(или config=myconfig1.json). Например, вы можете использовать
SET ASPNET_ENV=Development
и создать hosting.Development.jsonфайл с определенной конфигурацией. В качестве альтернативы вы можете использовать project.jsonс
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
"webProd": "Microsoft.AspNet.Server.Kestrel --config prod.json"
}
и запустить сервер по использованию
dnx webProd
Напомню дополнительно, что может потребоваться, чтобы вы разрешили дополнительно прослушивать и регистрироваться (для запуска dnx web). Это необходимо из-за брандмауэра и локальной безопасности прослушивания новых портов TCP / HTTP. Что-то вроде ниже должно сделать локальную регистрацию и прослушивание порта 5000 для всех (IPv4 и IPv6):
netsh http add iplisten ipaddress=0.0.0.0:5000
netsh http add iplisten ipaddress=::5000
netsh http add urlacl url=http://+:5000/ user=\Everyone
Для большей безопасности вы можете настроить указанную выше конфигурацию, чтобы предоставить минимальные права.
ОБНОВЛЕНО: Спасибо @BlaneBunderson. Можно использовать * вместо IP-адреса (например, http://*:5000) для прослушивания любых адресов IP4 и IP6 с любого интерфейса. Надо быть осторожным и не использовать эти
http://*:5000;http://::5000
http://::5000;http://*:5000
http://*:5000;http://0.0.0.0:5000
http://*:5000;http://0.0.0.0:5000
потому что для этого потребуется дважды зарегистрировать адрес IP6 ::или адрес IP4 .0.0.0.0
Соответствует объявлению
Технически, любое имя хоста, которое не является localhost или действительным адресом IPv4 или IPv6, приведет к привязке Kestrel ко всем сетевым интерфейсам.
Я думаю, что в будущем поведение может измениться. Таким образом , я бы рекомендовал использовать только *:5000, 0.0.0.0:5000и ::5000форму для регистрации любого ИТ - адреса.
ОБНОВЛЕНО 2: ASP.NET Core RC2 изменяет (см. Объявление ) поведение загрузки значений по умолчанию. Необходимо внести изменения в файл Mainдля загрузки настроек hosting.jsonи параметры командной строки. Ниже приведен пример использования
public static void Main(string[] args)
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("hosting.json", optional: true)
.AddEnvironmentVariables(prefix: "ASPNETCORE_")
.AddCommandLine(args)
.Build();
var host = new WebHostBuilder()
.UseUrls("http://*:1000", "https://*:1234", "http://0.0.0.0:5000")
.UseEnvironment("Development")
.UseConfiguration(config)
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
Выше используйте код три привязок: "http://*:1000", "https://*:1234", "http://0.0.0.0:5000"по умолчанию , вместо использования порта по умолчанию 5000 по умолчанию (точнее использование http://localhost:5000). Звонок .UseConfiguration(config)производится после .UseUrls . Таким образом, конфигурация, загруженная из hosting.jsonкомандной строки или из командной строки, перезаписывает параметры по умолчанию. Если удалить одну .SetBasePath(Directory.GetCurrentDirectory())строку, то hosting.jsonона будет загружена из того же каталога, в котором будет скомпилирована dll приложения (например bin\Debug\netcoreapp1.0).
Можно использовать выполнение как
dotnet.exe run --server.urls=http:
для перезаписи настроек по умолчанию (из UseUrls) и настроек из "server.urls"свойства, hosting.jsonесли оно существует.
Таким же образом можно перезаписать настройки ULR, установив переменную среды
set ASPNETCORE_SERVER.URLS=http:
то для привязки dotnet.exe runбудет использоваться запуск приложения по умолчанию http://localhost:12541/.
Вы можете найти здесь пример использования привязки HTTPS.
ЗАМЕЧАНИЕ: имя переменной среды изменено с ASPNETCORE_SERVER.URLSна ASPNETCORE_URLSв более поздних версиях ASP.NET (см. Здесь документацию по ASP.NET Core 3.1).