Domyślny plik konfiguracyjny używany przez serwer Kestrel to hosting.json
. Nazwa była wielokrotnie zmieniana w różnych wersjach beta. Jeśli używasz teraz project.json
z następującą "command"
sekcją
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
}
następnie podczas uruchamiania serwera z linii poleceń przez
dnx web
plik hosting.json
zostanie odczytany. Plik
{
"server.urls": "http://0.0.0.0:5000"
}
skonfiguruje serwer do nasłuchiwania 5000 na każdym adresie IP4. Konfiguracja
{
"server.urls": "http://::5000;http://0.0.0.0:5000"
}
poinformuje o nasłuchiwaniu 5000 na adresach IP4 i IP6.
Można określić alternatywne pliki konfiguracyjne za pomocą ASPNET_ENV
zmiennej środowiskowej użycia lub przez użycie --config myconfig1.json
(lub config=myconfig1.json
). Na przykład możesz użyć
SET ASPNET_ENV=Development
i stworzyć hosting.Development.json
plik o określonej konfiguracji. Alternatywnie możesz użyć project.json
z
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
"webProd": "Microsoft.AspNet.Server.Kestrel --config prod.json"
}
i uruchom serwer przez użycie
dnx webProd
Muszę dodatkowo przypomnieć, że może być wymagane pozwolenie na dodatkowe odsłuchanie i rejestrację (na start dnx web
). Jest to wymagane ze względu na zaporę ogniową i lokalne bezpieczeństwo nasłuchiwania nowych portów TCP / HTTP. Coś jak poniżej powinno spowodować lokalną rejestrację i nasłuchiwanie portu 5000 dla wszystkich (IPv4 i 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
Aby być bezpieczniejszym, możesz dostosować powyższą konfigurację, aby przyznać minimalne uprawnienia.
AKTUALIZACJA: Dzięki @BlaneBunderson. Można użyć * zamiast adresu IP (np. http://*:5000
), Aby nasłuchiwać na dowolnych adresach IP4 i IP6 z dowolnego interfejsu. Należy być ostrożnym i nie używać ich
http://*:5000;http://::5000
http://::5000;http://*:5000
http://*:5000;http://0.0.0.0:5000
http://*:5000;http://0.0.0.0:5000
ponieważ będzie wymagało dwukrotnej rejestracji adresu IP6 ::
lub adresu IP4 .0.0.0.0
Odpowiada ogłoszeniu
Z technicznego punktu widzenia każda nazwa hosta, która nie jest „localhost” lub prawidłowy adres IPv4 lub IPv6, spowoduje, że Kestrel będzie wiązać się ze wszystkimi interfejsami sieciowymi.
Myślę, że zachowanie można zmienić w przyszłości. Tak więc polecam tylko używać *:5000
, 0.0.0.0:5000
i ::5000
tworzą dla rejestracji z dowolnego adresu IT.
ZAKTUALIZOWANO 2: ASP.NET Core RC2 zmienia (zobacz ogłoszenie ) zachowanie ładowania wartości domyślnych. Main
Aby załadować ustawienia z hosting.json
i parametry wiersza poleceń, należy wprowadzić zmiany . Poniżej znajduje się przykład użycia
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();
}
Powyższy kod użycie trzy Wiązania: "http://*:1000"
, "https://*:1234"
, "http://0.0.0.0:5000"
domyślnie zamiast wykorzystania stanu domyślnego portu 5000 domyślnie (a dokładnie użycie http://localhost:5000
). Wezwanie.UseConfiguration(config)
są wykonywane później .UseUrls
. W ten sposób konfiguracja załadowana z hosting.json
lub wiersz poleceń nadpisuje domyślne opcje. Jeśli usunie się jeden .SetBasePath(Directory.GetCurrentDirectory())
wiersz, plik hosting.json
zostanie załadowany z tego samego katalogu, w którym zostanie skompilowana biblioteka dll aplikacji (na przykład bin\Debug\netcoreapp1.0
).
Można użyć wykonania jak
dotnet.exe run --server.urls=http:
nadpisać ustawienia domyślne (z UseUrls
) i ustawienia "server.urls"
właściwości z, hosting.json
jeśli istnieją.
W ten sam sposób można nadpisać ustawienia ULR, ustawiając zmienną środowiskową
set ASPNETCORE_SERVER.URLS=http:
wtedy domyślny start aplikacji za pomocą dotnet.exe run
będzie używany http://localhost:12541/
do wiązania.
Możesz znaleźć tutaj przykład użycia wiązania HTTPS.
UWAGA: nazwa zmiennej środowiskowej jest zmieniana z ASPNETCORE_SERVER.URLS
na ASPNETCORE_URLS
w nowszych wersjach ASP.NET (zobacz tutaj dokumentację ASP.NET Core 3.1).