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).
dnu restore
, seguidodnu build
y luegodnx web
inicié correctamente el servidor web. No sé por qué está sucediendo, pero al menos puedo hacer que funcione. Definitivamente hay un error que debe solucionarse antes del lanzamiento final. Por ahora, esta es la solución.server.urls
parámetro en el archivo de configuración de la aplicación o en los parámetros de la línea de comandos. El valor puede tener varios valores separados por punto y coma, consulte aquí . El nombre del archivo de configuración puede ser hosting.json , pero no solo puede ser json: vea el problema .--config
se puede utilizar para especificar el nombre del archivo de configuración