El archivo de configuración predeterminado que utiliza el servidor Kestrel es hosting.json
. El nombre se cambió varias veces en diferentes versiones beta. Si usa ahora project.json
con la siguiente "command"
sección
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
}
luego, durante el inicio del servidor desde la línea de comando,
dnx web
hosting.json
se leerá el archivo . El archivo
{
"server.urls": "http://0.0.0.0:5000"
}
configurará el servidor para escuchar 5000 en cada dirección IP4. La configuración
{
"server.urls": "http://::5000;http://0.0.0.0:5000"
}
informará para escuchar 5000 en direcciones IP4 e IP6.
Se pueden especificar archivos de configuración alternativos por ASPNET_ENV
variable de entorno de uso o por el uso de--config myconfig1.json
(o config=myconfig1.json
). Por ejemplo, puede utilizar
SET ASPNET_ENV=Development
y para crear hosting.Development.json
archivo con configuración específica. Alternativamente, puede usar project.json
con
"commands": {
"web": "Microsoft.AspNet.Server.Kestrel"
"webProd": "Microsoft.AspNet.Server.Kestrel --config prod.json"
}
e inicie el servidor por uso
dnx webProd
Debo recordar, además, que podría ser necesario que permitas escuchar y registrarte adicionalmente (para empezar dnx web
) . Es necesario debido al firewall y la seguridad local de escuchar nuevos puertos TCP / HTTP. Algo como a continuación debería hacer que el registro y la escucha local del puerto 5000 para todos (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
Para estar más seguro, puede ajustar la configuración anterior para otorgar derechos mínimos.
ACTUALIZADO: Gracias @BlaneBunderson. Se puede usar * en lugar de la dirección IP (como http://*:5000
) para escuchar cualquier dirección IP4 e IP6 desde cualquier interfaz. Uno debe tener cuidado y no usar estos
http://*:5000;http://::5000
http://::5000;http://*:5000
http://*:5000;http://0.0.0.0:5000
http://*:5000;http://0.0.0.0:5000
porque requerirá registrar la dirección IP6 ::
o la dirección IP4 0.0.0.0
dos veces .
Corresponde al anuncio
Técnicamente, cualquier nombre de host que no sea "localhost" o una dirección IPv4 o IPv6 válida hará que Kestrel se vincule a todas las interfaces de red.
Creo que el comportamiento podría cambiarse en el futuro. Por lo tanto yo recomendaría usar sólo *:5000
, 0.0.0.0:5000
y el ::5000
formulario para el registro de cualquier dirección de TI.
ACTUALIZADO 2: ASP.NET Core RC2 cambia (ver el anuncio ) el comportamiento de carga de los valores predeterminados. Uno tiene que hacer cambios en el Main
para cargar la configuración hosting.json
y los parámetros de la línea de comando. A continuación se muestra un ejemplo del uso
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();
}
El código de uso por encima de tres fijaciones: "http://*:1000"
, "https://*:1234"
, "http://0.0.0.0:5000"
por defecto en lugar del uso del puerto por defecto 5000 por defecto (para ser exactos el uso de http://localhost:5000
). La llamada de .UseConfiguration(config)
se hace después .UseUrls
. Por lo tanto, la configuración cargada desde hosting.json
o la línea de comando sobrescribe las opciones predeterminadas. Si elimina una .SetBasePath(Directory.GetCurrentDirectory())
línea, entonces elhosting.json
, se cargará desde el mismo directorio donde se compilará la dll de la aplicación (por ejemplo bin\Debug\netcoreapp1.0
).
Uno puede usar la ejecución como
dotnet.exe run --server.urls=http:
para sobrescribir la configuración predeterminada (desde UseUrls
) y la configuración de la "server.urls"
propiedad dehosting.json
si existe.
De la misma manera, se podría sobrescribir la configuración de ULR estableciendo la variable de entorno
set ASPNETCORE_SERVER.URLS=http:
entonces, el inicio predeterminado de la aplicación dotnet.exe run
se utilizará http://localhost:12541/
para el enlace.
Aquí puede encontrar un ejemplo del uso del enlace HTTPS.
OBSERVACIÓN: El nombre de la variable de entorno se cambia de ASPNETCORE_SERVER.URLS
a ASPNETCORE_URLS
en versiones posteriores de ASP.NET (consulte aquí la documentación de ASP.NET Core 3.1).