Файл конфігурації за замовчуванням, який використовується сервером 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
if, якщо вона існує.
Таким же чином можна було б замінити налаштування 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).