Share via


Le port ASP.NET Core par défaut est passé de 80 à 8080

Le port ASP.NET Core par défaut configuré dans les images conteneur .NET a été mis à jour du port 80 vers le port 8080.

Nous avons également ajouté la nouvelle variable d'environnement ASPNETCORE_HTTP_PORTS comme alternative plus simple à ASPNETCORE_URLS. La nouvelle variable attend une liste de numéros de ports délimités par des points-virgules, tandis que l'ancienne variable attend une syntaxe plus compliquée.

Les applications créées à l’aide de l’ancienne API WebHost.CreateDefaultBuilder() ne respectent pas la nouvelle variable d’environnement ASPNETCORE_HTTP_PORTS. Et maintenant que ASPNETCORE_URLS n’est plus défini automatiquement, l’URL par défaut http://localhost:5000 est utilisée, plutôt que http://*:80 comme précédemment.

Comportement précédent

Avant .NET 8, vous pouviez exécuter un conteneur qui s’attendait à ce que le port 80 soit le port par défaut et puisse accéder à l’application en cours d’exécution.

Par exemple, vous pouviez exécuter la commande suivante, puis accéder à l’application localement sur le port 8000, qui est mappé au port 80 dans le conteneur :

docker run --rm -it -p 8000:80 <my-app>

Nouveau comportement

À partir de .NET 8, si vous mappez le port 80 dans le conteneur sans définir explicitement le port ASP.NET Core utilisé dans le conteneur sur 80, toute tentative de connexion à ce port mappé échouera.

Par exemple, si vous exécutez la commande suivante, vous ne pourrez pas vous connecter à l'application localement à l'aide du port 8000.

docker run --rm -it -p 8000:80 <my-app>

Modifiez, à la place, la commande pour utiliser le port 8080 dans le conteneur :

docker run --rm -it -p 8000:8080 <my-app>

Vous pouvez voir la différence de comportement dans les exemples suivants.

Port de mappage 80 (cas de panne) :

$ docker run --rm -d -p 8000:80 mcr.microsoft.com/dotnet/samples:aspnetapp
ba88b746bd7097e503f8ab6e5320c595640e242f6de4f734412944a0e2836acc
$ curl http://localhost:8000/Environment
curl: (56) Recv failure: Connection reset by peer
$ docker kill ba88b746bd7097e503f8ab6e5320c595640e242f6de4f734412944a0e2836acc
ba88b746bd7097e503f8ab6e5320c595640e242f6de4f734412944a0e2836acc

Port de cartographie 8080 :

$ docker run --rm -d -p 8000:8080 mcr.microsoft.com/dotnet/samples:aspnetapp
74d866bdaa8a5a09e4a347bba17ced321d77a2524a0853294a123640bcc7f21d
$ curl http://localhost:8000/Environment
{"runtimeVersion":".NET 8.0.0-rc.1.23419.4","osVersion":"Alpine Linux v3.18","osArchitecture":"Arm64","user":"root","processorCount":4,"totalAvailableMemoryBytes":4123820032,"memoryLimit":0,"memoryUsage":30081024,"hostName":"74d866bdaa8a"}
$ docker kill 74d866bdaa8a5a09e4a347bba17ced321d77a2524a0853294a123640bcc7f21d
74d866bdaa8a5a09e4a347bba17ced321d77a2524a0853294a123640bcc7f21d

Port de mappage 80 avec ASPNETCORE_HTTP_PORTS défini sur le port 80 :

$ docker run --rm -d -p 8000:80 -e ASPNETCORE_HTTP_PORTS=80 mcr.microsoft.com/dotnet/samples:aspnetapp
3cc86b4b3ea1a7303d83171c132b0645d4adf61d80131152936b01661ae82a09
$ curl http://localhost:8000/Environment
{"runtimeVersion":".NET 8.0.0-rc.1.23419.4","osVersion":"Alpine Linux v3.18","osArchitecture":"Arm64","user":"root","processorCount":4,"totalAvailableMemoryBytes":4123820032,"memoryLimit":0,"memoryUsage":95383552,"hostName":"3cc86b4b3ea1"}
$ docker kill 3cc86b4b3ea1a7303d83171c132b0645d4adf61d80131152936b01661ae82a09
3cc86b4b3ea1a7303d83171c132b0645d4adf61d80131152936b01661ae82a09

Version introduite

.NET 8 Préversion 1

Type de changement

Ce changement est un changement de comportement.

Raison du changement

La modification du numéro de port a été apportée en raison de la nécessité de fournir une bonne expérience d’utilisation lors de la commutation à un non-root utilisateur. L’exécution en tant qu’utilisateur non-root nécessite l’utilisation d’un port non privilégié dans certains environnements. Étant donné que le port 80, le port par défaut précédent, est un port privilégié, la valeur par défaut a été mise à jour vers le port 8080, qui est un port non privilégié.

Il existe deux façons de résoudre ce changement cassant :

  • (Action recommandée) : définissez explicitement les variables d’environnement ASPNETCORE_HTTP_PORTS, ASPNETCORE_HTTPS_PORTS et ASPNETCORE_URLS sur le port souhaité. Exemple : docker run --rm -it -p 8000:80 -e ASPNETCORE_HTTP_PORTS=80 <my-app>
  • Mettez à jour les commandes et la configuration existantes qui se basent sur le port par défaut attendu du port 80 pour référencer le port 8080 à la place. Exemple : docker run --rm -it -p 8000:8080 <my-app>

Si votre application a été créée à l’aide de l’ancienne méthode WebHost.CreateDefaultBuilder(), définissez ASPNETCORE_URLS (et non ASPNETCORE_HTTP_PORTS). Exemple : docker run --rm -it -p 8000:80 -e ASPNETCORE_URLS=http://*:80 <my-app>.

Si vous utilisez Kubernetes ou Docker Compose, vous devez modifier le port selon ces schémas. Voir Utilisation de .NET avec Kubernetes pour découvrir des exemples.

Si vous utilisez des services conteneur Azure pour héberger votre application conteneur ASP.NET Core, vous devez mettre à jour votre environnement de conteur pour définir le port souhaité :

API affectées

Aucun.

Voir aussi