Die vom Kestrel-Server verwendete Standardkonfigurationsdatei lautet hosting.json
. Der Name wurde in verschiedenen Beta-Versionen mehrfach geändert. Wenn Sie jetzt project.json
mit dem folgenden "command"
Abschnitt verwenden
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
}
dann beim Starten des Servers über die Kommandozeile von
dnx web
Die Datei hosting.json
wird gelesen. Die Datei
{
"server.urls": "http://0.0.0.0:5000"
}
konfiguriert den Server so, dass bei jeder IP4-Adresse 5000 abgehört werden. Die Konfiguration
{
"server.urls": "http://::5000;http://0.0.0.0:5000"
}
informiert, um 5000 sowohl auf IP4- als auch auf IP6-Adresse abzuhören.
Alternative Konfigurationsdateien können durch die ASPNET_ENV
Umgebungsvariable der Verwendung oder durch die Verwendung von --config myconfig1.json
(oder config=myconfig1.json
) angegeben werden. Zum Beispiel können Sie verwenden
SET ASPNET_ENV=Development
und um eine hosting.Development.json
Datei mit einer bestimmten Konfiguration zu erstellen . Alternativ können Sie project.json
mit verwenden
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
"webProd": "Microsoft.AspNet.Server.Kestrel --config prod.json"
}
und starten Sie den Server durch Verwendung
dnx webProd
Ich muss zusätzlich daran erinnern, dass es erforderlich sein kann, dass Sie zusätzlich zuhören und sich registrieren lassen (um zu beginnen dnx web
). Dies ist aufgrund der Firewall und der lokalen Sicherheit beim Abhören neuer TCP / HTTP-Ports erforderlich. Etwas wie das Folgende sollte die lokale Registrierung und das Abhören von 5000 Ports für alle (IPv4 und IPv6) ermöglichen:
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
Um sicherer zu sein, können Sie die obige Konfiguration anpassen, um minimale Rechte zu gewähren.
AKTUALISIERT: Danke @BlaneBunderson. Man kann * statt IP - Adresse verwenden (wie http://*:5000
) auf hört irgendwelche IP4 und IP6 Adressen von jeder Schnittstelle. Man sollte vorsichtig sein und diese nicht benutzen
http://*:5000;http://::5000
http://::5000;http://*:5000
http://*:5000;http://0.0.0.0:5000
http://*:5000;http://0.0.0.0:5000
weil es erforderlich ist, die IP6-Adresse ::
oder die IP4-Adresse 0.0.0.0
zweimal zu registrieren .
Entspricht der Ankündigung
Technisch gesehen führt jeder Hostname, der nicht "localhost" oder eine gültige IPv4- oder IPv6-Adresse ist, dazu, dass Kestrel an alle Netzwerkschnittstellen gebunden wird.
Ich denke, dass das Verhalten in Zukunft geändert werden könnte. So würde ich empfehlen , nur zu verwenden *:5000
, 0.0.0.0:5000
und ::5000
für die Registrierung von jeder IT - Adresse zu bilden.
AKTUALISIERT 2: ASP.NET Core RC2 ändert (siehe Ankündigung ) das Verhalten beim Laden der Standardeinstellungen. Man muss Änderungen an der vornehmen Main
, um die Einstellungen hosting.json
und die Befehlszeilenparameter zu laden . Unten finden Sie ein Beispiel für die Verwendung
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();
}
Die obige Code verwendet drei Bindungen: "http://*:1000"
, "https://*:1234"
, "http://0.0.0.0:5000"
standardmäßig anstelle der Nutzung (sein um genau die Verwendung des Standard - Port 5000 standardmäßig http://localhost:5000
). Der Anruf von .UseConfiguration(config)
erfolgt nach .UseUrls
. Daher hosting.json
überschreibt die von der Konfiguration geladene Konfiguration oder die Befehlszeile die Standardoptionen. Wenn Sie eine .SetBasePath(Directory.GetCurrentDirectory())
Zeile entfernen , hosting.json
wird diese aus demselben Verzeichnis geladen, in dem die Anwendungs-DLL kompiliert wird (zum Beispiel bin\Debug\netcoreapp1.0
).
Man kann Ausführung wie verwenden
dotnet.exe run --server.urls=http://0.0.0.0:5000
um die Standardeinstellungen (von UseUrls
) und die Einstellungen von der "server.urls"
Eigenschaft zu überschreiben, hosting.json
falls vorhanden.
Auf die gleiche Weise könnte man die ULR-Einstellungen überschreiben, indem man die Umgebungsvariable setzt
set ASPNETCORE_SERVER.URLS=http://localhost:12541/
dann der Standard der Anwendung beginnen dotnet.exe run
wird verwenden http://localhost:12541/
für die Bindung.
Sie können finden hier ein Beispiel für die Verwendung von HTTPS - Bindung.
HINWEIS: Der Name der Umgebungsvariable wird von geändert ASPNETCORE_SERVER.URLS
zu ASPNETCORE_URLS
späteren Versionen von ASP.NET (siehe hier die Dokumentation von ASP.NET - Core 3.1).