Sdílet prostřednictvím


Výchozí port ASP.NET Core se změnil z 80 na 8080

Výchozí port ASP.NET Core nakonfigurovaný v imagích kontejnerů .NET se aktualizoval z portu 80 na 8080.

Přidali jsme také novou ASPNETCORE_HTTP_PORTS proměnnou prostředí jako jednodušší alternativu k ASPNETCORE_URLS. Nová proměnná očekává seznam čísel portů oddělený středníkem, zatímco starší proměnná očekává složitější syntaxi.

Aplikace vytvořené pomocí staršího WebHost.CreateDefaultBuilder() rozhraní API nebudou respektovat novou ASPNETCORE_HTTP_PORTS proměnnou prostředí. A teď už ASPNETCORE_URLS se automaticky nenastaví, přepne se tak, aby používal výchozí adresu URL http://localhost:5000, nikoli http://*:80dříve.

Předchozí chování

Před .NET 8 můžete spustit kontejner, který očekával, že port 80 bude výchozím portem a bude mít přístup ke spuštěné aplikaci.

Můžete například spustit následující příkaz a pak k aplikaci přistupovat místně na portu 8000, který se mapuje na port 80 v kontejneru:

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

Nové chování

Počínaje rozhraním .NET 8, pokud v kontejneru namapujete na port 80, aniž byste explicitně nastavili port ASP.NET Core použitý v kontejneru na 80, všechny pokusy o připojení k namapovanému portu selžou.

Pokud například spustíte následující příkaz, nebudete se moct k aplikaci připojit místně pomocí portu 8000.

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

Místo toho změňte příkaz tak, aby používal port 8080 v kontejneru:

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

Rozdíl v chování můžete vidět v následujících příkladech.

Port 80 mapování (případ selhání):

$ 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 8080mapování:

$ 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

Mapování portu 80 s nastaveným ASPNETCORE_HTTP_PORTS na 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

Zavedená verze

.NET 8 Preview 1

Typ změny

Tato změna je změna chování.

Důvod změny

Změna čísla portu byla provedena kvůli potřebě zajistit dobrou použitelnost při přechodu na non-root uživatele. Spuštění jako non-root uživatel vyžaduje použití neprivilegovaného portu v některých prostředích. Vzhledem k tomu, že port 80, předchozí výchozí port, je privilegovaný port, výchozí port se aktualizoval na port 8080, což je neprivilegovaný port.

Na tuto zásadní změnu můžete reagovat dvěma způsoby:

  • (Doporučená akce) Explicitně nastavte ASPNETCORE_HTTP_PORTSproměnné a ASPNETCORE_HTTPS_PORTSASPNETCORE_URLSproměnné prostředí na požadovaný port. Příklad: docker run --rm -it -p 8000:80 -e ASPNETCORE_HTTP_PORTS=80 <my-app>
  • Aktualizujte existující příkazy a konfiguraci, které místo toho odkazují na port 800 s očekávaným výchozím portem portu 80. Příklad: docker run --rm -it -p 8000:8080 <my-app>

Pokud byla vaše aplikace vytvořena pomocí starší WebHost.CreateDefaultBuilder() metody, nastavte ASPNETCORE_URLS (ne ASPNETCORE_HTTP_PORTS). Příklad: docker run --rm -it -p 8000:80 -e ASPNETCORE_URLS=http://*:80 <my-app>.

Pokud používáte Kubernetes nebo Docker Compose, musíte změnit port podle těchto schémat. Příklady najdete v tématu Použití .NET s Kubernetes.

Pokud k hostování aplikace kontejneru ASP.NET Core používáte služby kontejneru Azure, musíte prostředí kontejneru aktualizovat a nastavit požadovaný port:

  • Pro službu Aplikace Azure nastavte WEBSITES_PORTrozhraní příkazového řádku nebo na portálu.
  • Pro Azure Container Apps můžete port změnit při vytváření prostředků.
  • V případě služby Azure Container Instances můžete port změnit při vytváření prostředků.

Ovlivněná rozhraní API

Nezaokrouhlovat.

Viz také