Standaardpoort ASP.NET Core is gewijzigd van 80 in 8080
De standaardpoort ASP.NET Core die is geconfigureerd in .NET-containerinstallatiekopieën, is bijgewerkt van poort 80 naar 8080.
We hebben ook de nieuwe ASPNETCORE_HTTP_PORTS
omgevingsvariabele toegevoegd als een eenvoudiger alternatief voor ASPNETCORE_URLS
. De nieuwe variabele verwacht een door puntkomma's gescheiden lijst met poortnummers, terwijl de oudere variabele een gecompliceerdere syntaxis verwacht.
Apps die zijn gebouwd met behulp van de oudere WebHost.CreateDefaultBuilder() API, respecteren de nieuwe ASPNETCORE_HTTP_PORTS
omgevingsvariabele niet. En nu dat ASPNETCORE_URLS
niet meer automatisch is ingesteld, schakelen ze over naar het gebruik van een standaard-URL van , in plaats http://*:80
van http://localhost:5000
, zoals voorheen.
Vorig gedrag
Vóór .NET 8 kunt u een container uitvoeren die verwachtte dat poort 80 de standaardpoort is en toegang heeft tot de actieve app.
U kunt bijvoorbeeld de volgende opdracht uitvoeren en vervolgens lokaal toegang krijgen tot de app op poort 8000, die is toegewezen aan poort 80 in de container:
docker run --rm -it -p 8000:80 <my-app>
Nieuw gedrag
Vanaf .NET 8 mislukt elke poging om verbinding te maken met de toegewezen poort 80 in de container zonder expliciet de ASP.NET Core-poort in de container in te stellen op 80. Elke poging om verbinding te maken met die toegewezen poort mislukt.
Als u bijvoorbeeld de volgende opdracht uitvoert, kunt u geen verbinding maken met de toepassing lokaal via poort 8000.
docker run --rm -it -p 8000:80 <my-app>
Wijzig in plaats daarvan de opdracht om poort 8080 in de container te gebruiken:
docker run --rm -it -p 8000:8080 <my-app>
In de volgende voorbeelden ziet u het verschil in gedrag.
Toewijzingspoort 80
(foutcase):
$ 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
Toewijzingspoort 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
80
Poort toewijzen met ASPNETCORE_HTTP_PORTS
ingesteld op poort80
:
$ 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
Versie geïntroduceerd
.NET 8 Preview 1
Type wijziging
Deze wijziging is een gedragswijziging.
Reden voor wijziging
De wijziging van het poortnummer is gemaakt vanwege de noodzaak om een goede bruikbaarheidservaring te bieden bij het overschakelen naar een non-root
gebruiker. Voor uitvoering als gebruiker non-root
is het gebruik van een niet-bevoegde poort in sommige omgevingen vereist. Aangezien poort 80, de vorige standaardpoort, een bevoegde poort is, is de standaardwaarde bijgewerkt naar poort 8080, een niet-bevoegde poort.
Aanbevolen actie
Er zijn twee manieren om te reageren op deze belangrijke wijziging:
- (Aanbevolen actie) Stel de
ASPNETCORE_HTTP_PORTS
,ASPNETCORE_HTTPS_PORTS
enASPNETCORE_URLS
omgevingsvariabelen expliciet in op de gewenste poort. Voorbeeld:docker run --rm -it -p 8000:80 -e ASPNETCORE_HTTP_PORTS=80 <my-app>
- Werk bestaande opdrachten en configuratie bij die afhankelijk zijn van de verwachte standaardpoort van poort 80 om in plaats daarvan te verwijzen naar poort 8080. Voorbeeld:
docker run --rm -it -p 8000:8080 <my-app>
Als uw app is gebouwd met behulp van de oudere WebHost.CreateDefaultBuilder() methode, stelt u deze in ASPNETCORE_URLS
(niet ASPNETCORE_HTTP_PORTS
). Voorbeeld: docker run --rm -it -p 8000:80 -e ASPNETCORE_URLS=http://*:80 <my-app>
.
Als u Kubernetes of Docker Compose gebruikt, moet u de poort per die schema's wijzigen. Zie .NET gebruiken met Kubernetes voor voorbeelden.
Als u Azure Container Services gebruikt om uw ASP.NET Core-container-app te hosten, moet u uw containeromgeving bijwerken om de gewenste poort in te stellen:
- Stel voor Azure-app Service
WEBSITES_PORT
de CLI of in de portal in. - Voor Azure Container Apps kunt u de poort wijzigen als onderdeel van het maken van resources.
- Voor Azure Container Instances kunt u de poort wijzigen als onderdeel van het maken van resources.
Betrokken API's
Geen.