Lorsque vous utilisez WebHostBuilder
dans un Main
comment puis-je spécifier le port auquel il se lie ?
Par défaut, il utilise 5000.
Notez que cette question est spécifique à la nouvelle API ASP.NET Core (actuellement en 1.0.0-RC2).
Lorsque vous utilisez WebHostBuilder
dans un Main
comment puis-je spécifier le port auquel il se lie ?
Par défaut, il utilise 5000.
Notez que cette question est spécifique à la nouvelle API ASP.NET Core (actuellement en 1.0.0-RC2).
Dans ASP.NET Core 3.1, il existe 4 façons principales de spécifier un port personnalisé :
En utilisant des arguments de ligne de commande, en démarrant votre application .NET avec --urls=[url]
:
dotnet run --urls=http://localhost:5001/
Utilisation de appsettings.json
en ajoutant un Urls
nœud :
{ "Urls": "http://localhost:5001" }
Utilisation de variables d'environnement, avec ASPNETCORE_URLS=http://localhost:5001/
.
Utilisation de UseUrls()
si vous préférez le faire de manière programmatique :
public static class Program { public static void Main(string[] args) => CreateHostBuilder(args).Build().Run();
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(builder =>
{
builder.UseStartup<Startup>();
builder.UseUrls("http://localhost:5001/");
});
}
Ou, si vous utilisez toujours le constructeur d'hôte web au lieu du constructeur d'hôte générique :
public class Program
{
public static void Main(string[] args) =>
new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.UseUrls("http://localhost:5001/")
.Build()
.Run();
}
L'utilisation d'URLs fixes directement dans le code n'est pas le meilleur choix à mon avis.
J'ai testé cela et cela fonctionne bien, merci. @Oleg, pourriez-vous étoffer votre réponse en indiquant la configuration dont vous avez besoin ? Il pourrait être bon d'avoir cela dans un fichier de configuration.
@Oleg peut-être, mais en utilisant UseUrls
est l'approche recommandée par l'équipe ASP.NET pour les scénarios d'auto-hébergement (la valeur elle-même ne doit pas être codée en dur, évidemment). Cela dit, j'ai mis à jour ma réponse pour mentionner comment vous pouvez le faire en utilisant le constructeur de configuration.
Réponse complémentaire pour aider tous ceux qui font cela avec l'intégration VS-Docker. J'ai dû changer le port 8080 pour utiliser l'environnement "flexible" dans google appengine.
Vous aurez besoin des éléments suivants dans votre Dockerfile :
ENV ASPNETCORE_URLS=http://+:8080
EXPOSE 8080
et vous devrez également modifier le port dans docker-compose.yml :
ports:
- "8080"
Merci, nous pouvons définir les variables dans le promt de commande Windows de la même manière : set ASPNETCORE_URLS=http://\*:8080
Cela ne fonctionne pas pour moi. Êtes-vous sûr que c'est tout ce que vous avez modifié ? Avez-vous eu besoin de faire quelque chose de spécial à votre image par la suite ou quelque chose avec docker ?
Cela fait si longtemps que ça a peut-être changé, mais si je me souviens bien, c'est tout ce que j'avais à faire.
Vous pouvez spécifier l'URL d'hébergement sans aucune modification de votre application.
Créer un Properties/launchSettings.json
dans le répertoire de votre projet et remplissez-le avec quelque chose comme ceci :
{
"profiles": {
"MyApp1-Dev": {
"commandName": "Project",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:5001/"
}
}
}
dotnet run
devrait choisir votre launchSettings.json
et l'affichera dans la console :
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.
Plus de détails : https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments
Non, il faut que ce soit dans [ProjectRoot]/Properties/launchSettings.json
mais ce qui est bien, c'est que ça marche sans problème.
La solution alternative consiste à utiliser un hosting.json
dans la Racine du projet.
{
"urls": "http://localhost:60000"
}
Et ensuite dans 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();
}
Cela n'a pas fonctionné pour moi. server.urls est maintenant urls et assurez-vous d'ajouter une entrée dans project.json "publishOptions" : { "include" : [ "appsettings.json", "web.config", "wwwroot", "hosting.json" ] },
Lorsqu'il est hébergé dans des conteneurs docker (version linux pour moi), vous pouvez obtenir un message 'Connection Refused'. Dans ce cas, vous pouvez utiliser l'adresse IP 0.0.0.0 ce qui signifie "toutes les adresses IP de cette machine" au lieu de l'expression localhost loopback pour réparer le transfert de port.
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();
}
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
16 votes
Examiner
launchSettings.json
deProperties
dossier. Vous pouvez modifier le port dans lelaunchUrl
.0 votes
@Oleg, j'avais quelques paramètres liés à IIS dans le modèle de projet de la RC1. Ils n'ont pas eu d'effet.
0 votes
On peut utiliser
hosting.json
(voir la réponse ), qui ont été utilisés par défaut dans la RC1 et il suffit d'ajouter.AddJsonFile("hosting.json", optional: true)
(voir aquí )3 votes
L'utilisation de la pile de configuration semble en effet bien meilleure que de s'appuyer sur un mécanisme purement spécifique à VS (launchSettings.json).
0 votes
@DrewNoakes : J'ai ajouté mon ancienne réponse con MISE À JOUR 2 partie. Elle décrit une variation de la modification du port par défaut et l'utilisation de l'option
hosting.json
ou la ligne de commande pour la configuration de la liaison.