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