Posteriormente a buscar en varios repositorios y sitios webs de internet al concluir nos hemos encontrado la solución que te enseñaremos ahora.
Solución:
El archivo de configuración predeterminado utilizado por el servidor Kestrel es hosting.json
. El nombre se cambió varias veces en diferentes versiones beta. Si usa ahora project.json
con lo siguiente "command"
sección
"commands":
"web": "Microsoft.AspNet.Server.Kestrel"
luego, durante el inicio del servidor desde la línea de comando,
dnx web
el archivo hosting.json
será leído. 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 tanto en la dirección IP4 como en la IP6.
Se pueden especificar archivos de configuración alternativos por uso ASPNET_ENV
variable de entorno 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 alguna Direcciones 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 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, recomendaría usar solo *:5000
, 0.0.0.0:5000
y ::5000
formulario para el registro de cualquier dirección informática.
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 de hosting.json
y los parámetros de la línea de comandos. 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()
.Build();
host.Run();
El código anterior usa tres enlaces: "http://*:1000"
, "https://*:1234"
, "http://0.0.0.0:5000"
por defecto en lugar de usar el puerto predeterminado 5000 por defecto (para ser exactos, el uso de http://localhost:5000
). La llamada de .UseConfiguration(config)
son hechos después.UseUrls
. Por lo tanto, la configuración cargada desde hosting.json
o la línea de comando sobrescribe las opciones predeterminadas. Si uno quita .SetBasePath(Directory.GetCurrentDirectory())
línea entonces la hosting.json
se cargará desde el mismo directorio donde se compilará la dll de la aplicación (por ejemplo binDebugnetcoreapp1.0
).
Uno puede usar la ejecución como
dotnet.exe run --server.urls=http://0.0.0.0:5000
para sobrescribir la configuración predeterminada (desde UseUrls
) y la configuración de "server.urls"
propiedad de hosting.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://localhost:12541/
luego el inicio predeterminado de la aplicación usando dotnet.exe run
utilizará http://localhost:12541/
para encuadernar.
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
para ASPNETCORE_URLS
en versiones posteriores de ASP.NET (consulte aquí la documentación de ASP.NET Core 3.1).
En RC2, la sección de comandos de project.json ya no se usa. Todavía no he conseguido que Kestrel recoja el hosting.json, pero puede configurar programáticamente el puerto en el Main de la aplicación donde se crea y configura el nuevo WebHostBuilder. Simplemente agregue el método .UseUrls () como en la muestra a continuación
public static void Main(string[] args)
var host = new WebHostBuilder()
.UseUrls("http://0.0.0.0:5000/")
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup()
.Build();
host.Run();
Si usa asp.net core 2.1 +, modifique la sección de configuración en appsettings.json.
"Kestrel":
"EndPoints":
"Http":
"Url": "http://0.0.0.0:5002"
,
Si haces scroll puedes encontrar las explicaciones de otros administradores, tú incluso tienes la libertad de mostrar el tuyo si lo deseas.