tag - ¿Cómo especificar el puerto en el que está alojada una aplicación ASP.NET Core?
tag helpers asp net core (9)
Alternativamente, puede especificar el puerto ejecutando la aplicación a través de la línea de comando.
Simplemente ejecute el comando:
dotnet run --server.urls http://localhost:5001
Nota: Donde 5001 es el puerto en el que desea ejecutar.
Al usar
WebHostBuilder
en un punto de entrada
Main
, ¿cómo puedo especificar el puerto al que se une?
Por defecto usa 5000.
Tenga en cuenta que esta pregunta es específica de la nueva API ASP.NET Core (actualmente en 1.0.0-RC2).
Cuando se aloja en contenedores de Docker (versión de Linux para mí), es posible que reciba un mensaje de "Conexión rechazada". En ese caso, puede usar la dirección IP 0.0.0.0 que significa "todas las direcciones IP en esta máquina" en lugar del bucle de retorno localhost para arreglar el reenvío de puertos.
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.UseUrls("http://0.0.0.0:5000/")
.Build();
host.Run();
}
}
La solución alternativa es usar un
hosting.json
en la raíz del proyecto.
{
"urls": "http://localhost:60000"
}
Y luego en
Program.cs
public static void Main(string[] args)
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("hosting.json", true)
.Build();
var host = new WebHostBuilder()
.UseKestrel(options => options.AddServerHeader = false)
.UseConfiguration(config)
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
Por encima de .net core 2.2, el método Main support args with WebHost.CreateDefaultBuilder (args)
public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>(); }
Puede construir su proyecto e ir al comando
bin
run como este
dotnet <yours>.dll --urls=http://localhost:5001
o con múltiples URL
dotnet <yours>.dll --urls="http://localhost:5001,https://localhost:5002"
Puede especificar la URL de alojamiento sin ningún cambio en su aplicación.
Cree un archivo
Properties/launchSettings.json
en el directorio de su proyecto y
Properties/launchSettings.json
con algo como esto:
{
"profiles": {
"MyApp1-Dev": {
"commandName": "Project",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:5001/"
}
}
}
dotnet run
comando
launchSettings.json
dotnet run
debe elegir su archivo
launchSettings.json
y lo mostrará en la consola:
C:/ProjectPath [master ≡]
λ dotnet run
Using launch settings from C:/ProjectPath/Properties/launchSettings.json...
Hosting environment: Development
Content root path: C:/ProjectPath
Now listening on: http://localhost:5001
Application started. Press Ctrl+C to shut down.
Más detalles: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments
Puede insertar la sección Kestrel en el archivo asp.net core 2.1+ appsettings.json.
"Kestrel": {
"EndPoints": {
"Http": {
"Url": "http://0.0.0.0:5002"
}
}
},
Puede usar
UseUrls
para eso:
public class Program
{
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.UseUrls("http://localhost:5001/")
.Build();
host.Run();
}
}
Alternativamente, puede configurar la dirección del servidor utilizando la pila de configuración. A continuación, le mostramos cómo puede usar los argumentos de la línea de comandos para hacer fluir la dirección que desea:
public class Program
{
public static void Main(string[] args)
{
var configuration = new ConfigurationBuilder()
.AddCommandLine(args)
.Build();
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseConfiguration(configuration)
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
host.Run();
}
}
dotnet run --urls=http://localhost:5001/
Respuesta de seguimiento para ayudar a cualquiera que haga esto con la integración de VS Docker. Necesitaba cambiar al puerto 8080 para ejecutar usando el entorno "flexible" en google appengine.
Necesitará lo siguiente en su Dockerfile:
ENV ASPNETCORE_URLS=http://+:8080
EXPOSE 8080
y también necesitarás modificar el puerto en docker-compose.yml:
ports:
- "8080"
Vaya a properties / launchSettings.json y busque su nombre de aplicación y debajo de esto, encuentre applicationUrl. verá que está ejecutando localhost: 5000, cámbielo a lo que quiera. y luego ejecuta dotnet run ...... hurra