Il predefinito usato da Il server Kestrel è hosting.json
. Il nome è stato cambiato più volte in diverse versioni beta. Se si utilizza ora project.json
con il seguente "command"
sezione
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
}
poi durante l'avvio del server dalla riga di comando per
dnx web
il file hosting.json
verrà letto. Il file
{
"server.urls": "http://0.0.0.0:5000"
}
configurerà il server per l'ascolto di 5000 su ogni indirizzo IP4. La configurazione
{
"server.urls": "http://::5000;http://0.0.0.0:5000"
}
informa di ascoltare 5000 su entrambi gli indirizzi IP4 e IP6.
È possibile specificare i file di configurazione alternativi utilizzando la variabile di ambiente ASPNET_ENV
o l'utilizzo di --config myconfig1.json
(o config=myconfig1.json
). Ad esempio è possibile utilizzare
SET ASPNET_ENV=Development
e per creare hosting.Development.json
file con configurazione specifica. In alternativa è possibile utilizzare project.json
con
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
"webProd": "Microsoft.AspNet.Server.Kestrel --config prod.json"
}
e avviare il server in base all'utilizzo
dnx webProd
devo ricordare inoltre che potrebbe essere necessario che si consente di ascoltare in aggiunta e per iscriversi (per iniziare dnx web
) .È richiesto a causa del firewall e della sicurezza locale per l'ascolto di nuove porte TCP/HTTP. Qualcosa di simile al di sotto dovrebbe fare la registrazione locale e l'ascolto di 5000 porta per tutti (IPv4 e 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
Per essere più sicuro è possibile regolare la configurazione di cui sopra per concedere i diritti minimi.
AGGIORNATO: Grazie a @BlaneBunderson. Si può usare * invece di un indirizzo IP (come http://*:5000
) per ascoltare su qualsiasi indirizzo IP4 e IP6 da qualsiasi interfaccia. Uno dovrebbe essere attentamente e non usare http://*:5000;http://::5000
, http://::5000;http://*:5000
, http://*:5000;http://0.0.0.0:5000
o http://*:5000;http://0.0.0.0:5000
perché richiede di registrare IP6 indirizzo ::
o l'indirizzo IP4 0.0.0.0
due volte.
Corrisponde a the announcement
Tecnicamente, qualsiasi nome host che non è "localhost" o un IPv4 valido o indirizzo IPv6 causerà Kestrel di legarsi a tutte le interfacce di rete.
Penso che il comportamento potrebbe essere modificato in futuro. Quindi consiglierei di utilizzare solo il modulo , 0.0.0.0:5000
e ::5000
per la registrazione di qualsiasi indirizzo IT.
AGGIORNAMENTO 2: modifiche ASP.NET core RC2 (vedi the announcement) il comportamento di caricare le impostazioni predefinite. È necessario apportare modifiche allo Main
per caricare le impostazioni da hosting.json
e ai parametri della riga di comando. Di seguito un esempio di utilizzo
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();
}
L'uso codice sopra tre attacchi: "http://*:1000"
, "https://*:1234"
, "http://0.0.0.0:5000"
di default invece di utilizzo della porta predefinita 5000 per default (per l'esattezza l'utilizzo di http://localhost:5000
). La chiamata di .UseConfiguration(config)
viene effettuata dopo.UseUrls
. Pertanto la configurazione caricata da hosting.json
o dalla riga di comando sovrascrive le opzioni predefinite. Se si rimuove la riga .SetBasePath(Directory.GetCurrentDirectory())
, lo hosting.json
verrà caricato dalla stessa directory in cui verrà compilata la DLL dell'applicazione (ad esempio bin\Debug\netcoreapp1.0
).
Si può utilizzare l'esecuzione come
dotnet.exe run --server.urls=http://0.0.0.0:5000
per sovrascrivere le impostazioni di default (da UseUrls
) e le impostazioni da "server.urls"
proprietà di hosting.json
se è esiste.
Allo stesso modo si potrebbe sovrascrivere le impostazioni ULR impostando la variabile d'ambiente
set ASPNETCORE_SERVER.URLS=http://localhost:12541/
quindi l'inizio predefinita dell'applicazione utilizzando dotnet.exe run
utilizzerà http://localhost:12541/
per il legame.
È possibile trovare here un esempio dell'utilizzo del collegamento HTTPS.
Possibile duplicato del [ASP.NET 5 Kestrel collegare all'interno della LAN] (http://stackoverflow.com/questions/33975949/asp-net-5-kestrel-connect-within-lan) –
Bene, la seconda risposta nella domanda collegata si riferisce al formato JSON. Non è utile neanche per te? –
@chuex L'ho provato e inizialmente ha bloccato il server Web all'avvio. Non so perché. Quindi ho eseguito 'dnu restore', seguito da' dnu build' e quindi 'dnx web' ha avviato correttamente il web server. Non so perché accada, ma almeno sono in grado di farlo funzionare. C'è sicuramente un bug che deve essere affrontato prima della versione finale. Per ora, questa è la soluzione. – AngryHacker