Implementé mi aplicación c #, asp.net 5, mvc 6 en un servidor de Windows 2008. Me encendí dnx web
y está escuchando el puerto 5000 y funciona bien cuando accedo desde la computadora local.
¿Cómo consigo que escuche solicitudes que no sean de localhost?
PD: Esta pregunta no es un duplicado de esto ... se refiere a asp.net pre RC1 cuando hosting.ini en realidad tenía un formato .ini. Ahora, es JSON y no puedo encontrar ninguna documentación sobre lo que realmente debería estar en él.
PPS La verdadera solución está en la respuesta no aceptada a la pregunta vinculada, con una advertencia masiva. Pasos:
- Cambie su project.json según la respuesta vinculada.
- Publique su proyecto en su servidor.
- En el servidor, vaya a la carpeta ... \ Approot \ src \ YourProject y abra una ventana de comandos allí.
- Corre
dnx web
- fallará - correr
dnu restore
- Ejecuta 'dnu build'
- Ejecute 'dnx web`: el servidor web ahora debería comenzar bien
PD Para las personas que votan a favor de esta pregunta. Está desactualizado. ¡Muy desactualizado!
Se aplicó a las primeras versiones de .NET Core. La pregunta y las respuestas ciertamente no son aplicables para las versiones actuales del marco (por ejemplo, 2.x, 3.x)
fuente
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ónRespuestas:
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 ahoraproject.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,
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
(oconfig=myconfig1.json
). Por ejemplo, puede utilizary para crear
hosting.Development.json
archivo con configuración específica. Alternativamente, puede usarproject.json
con"commands": { "web": "Microsoft.AspNet.Server.Kestrel" "webProd": "Microsoft.AspNet.Server.Kestrel --config prod.json" }
e inicie el servidor por uso
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):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 estoshttp://*: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 IP40.0.0.0
dos veces .Corresponde al anuncio
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ónhosting.json
y los parámetros de la línea de comando. A continuación se muestra un ejemplo del usopublic 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 dehttp://localhost:5000
). La llamada de.UseConfiguration(config)
se hace después.UseUrls
. Por lo tanto, la configuración cargada desdehosting.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 ejemplobin\Debug\netcoreapp1.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 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://localhost:12541/
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
aASPNETCORE_URLS
en versiones posteriores de ASP.NET (consulte aquí la documentación de ASP.NET Core 3.1).fuente
http://*:5000
es lo mismohttp://::5000;http://0.0.0.0:5000
y nohttp://0.0.0.0:5000
. Obliga a escuchar tanto IPv4 como IPv6. Puede verificarlo por usohttp://*:5000;http://::5000
ohttp://::5000;http://*:5000
. Se obtiene el error "Microsoft.AspNet.Server.Kestrel.Networking.UvException: Error -4091 La dirección EADDRINUSE ya está en uso" durante el registro de la segunda dirección. En algunos escenarios, el registro de IPv4 e IPv6 es bueno, en otros escenarios no es bueno. De cualquier forma es bueno mencionar el camino..UseStartup<Startup>()
anularía.UseConfiguration(config)
en su ejemplo de "actualización 2"?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<Startup>() .Build(); host.Run(); }
fuente
.UseUrls("http://*:5000")
lugar, usé un puerto reenviado 5000 con una IP de host vacía en VirtualBox, y finalmente puedo acceder a los puntos finales de .NET Core alojados en Docker desde mi Mac. ¡Dulce!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" } } },
fuente
ASPNETCORE_URLS
no funcionó para míSi está intentando colocar una aplicación ASP.NET Core dentro de un contenedor de ventana acoplable (que era mi caso de uso para tener que escuchar direcciones que no son de host local), tenga en cuenta que este caso de uso ya lo ha preparado Microsoft. Puede ver toda la gloria en https://hub.docker.com/r/microsoft/aspnetcore/
En la actualidad (v1.0.1), la magia clave para resolver este problema es que el Dockerfile de origen contiene una configuración de variable de entorno de URL, y la aplicación no intenta anular esto. (De hecho, una aplicación en contenedores debe hacer una afirmación interna lo menos posible sobre el entorno donde se ejecutará).
ENV ASPNETCORE_URLS http://+:80
Tenga en cuenta el signo más en lugar del asterisco. De hecho, recomiendo visitar el enlace de dockerhub anterior en lugar de leer mi respuesta mientras el enlace sea bueno. La versión 1.1 está a la vuelta de la esquina y las cosas pueden volver a cambiar en el futuro.
Al ejecutar el contenedor, asegúrese de exponer el puerto de invitado 80, según la configuración de la variable de entorno. Por ejemplo:
docker run -d -p 8000:80 myapp curl localhost:8000
fuente
Para AspNetCore 3.1+ simplemente agregue la siguiente línea en el archivo
appsettings.json
:"Urls": "http://*:80"
fuente
hosting.json
no funcionan aunque.Establezca la variable de entorno
ASPNETCORE_URLS
enhttp://0.0.0.0:5000/
.Si se ejecuta desde Visual Studio, agrega la variable de entorno desde la pestaña Depurar de las propiedades del proyecto.
fuente