По умолчанию сервер 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).