Az alapértelmezett ASP.NET Core-port 80-ról 8080-ra módosult

A .NET-tárolólemezképekben konfigurált alapértelmezett ASP.NET Core-port a 80-ról a 8080-ra frissült.

Az új ASPNETCORE_HTTP_PORTS környezeti változót is hozzáadtuk egyszerűbb alternatívaként.ASPNETCORE_URLS Az új változó pontosvesszővel tagolt portszámlistát vár, míg a régebbi változó bonyolultabb szintaxist vár.

A régebbi WebHost.CreateDefaultBuilder() API-val készült alkalmazások nem fogják tiszteletben tartani az új ASPNETCORE_HTTP_PORTS környezeti változót. És most, hogy ASPNETCORE_URLS már nincs automatikusan beállítva, a korábbiakhoz http://*:80hasonlóan az alapértelmezett URL-cím http://localhost:5000használatára váltanak.

Előző viselkedés

A .NET 8 előtt futtathat egy tárolót, amely azt várja, hogy a 80-as port legyen az alapértelmezett port, és hozzáférhessen a futó alkalmazáshoz.

Az alábbi parancs futtatásával például helyileg, a 8000-s porton érheti el az alkalmazást, amely a tároló 80-s portjához van leképezve:

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

Új viselkedés

A .NET 8-tól kezdve, ha a tároló 80-ai portra van megfeleltetve anélkül, hogy a tárolóban használt ASP.NET Core-portot 80-ra állítja, a megfeleltetett porthoz való kapcsolódási kísérletek sikertelenek lesznek.

Ha például a következő parancsot futtatja, nem tud helyileg csatlakozni az alkalmazáshoz a 8000-s port használatával.

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

Ehelyett módosítsa a parancsot úgy, hogy a tárolóban a 8080-at használja:

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

A viselkedésbeli különbségeket az alábbi példákban tekintheti meg.

Leképezési port 80 (hibaeset):

$ 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

Leképezési port 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

80ASPNETCORE_HTTP_PORTS Port leképezése portra 80állítva:

$ 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

Ha Kubernetes-t vagy Docker Compose-t használ, módosítania kell a portot ezeken a sémákon. Példákért lásd a .NET és a Kubernetes használatát.

Bevezetett verzió

.NET 8 előzetes verzió 1

A módosítás típusa

Ez a változás viselkedésbeli változás.

A változás oka

A portszám módosítása azért történt, mert jó használhatósági élményt kell nyújtania a non-root felhasználóra való váltáskor. A felhasználóként non-root való futtatáshoz nem emelt szintű portot kell használni bizonyos környezetekben. Mivel a 80-as port, az előző alapértelmezett port egy emelt szintű port, az alapértelmezett port a 8080-as portra lett frissítve, amely nem emelt jogosultságú port.

A kompatibilitástörő változásra kétféleképpen lehet reagálni:

  • Ajánlott: Explicit módon állítsa be a ASPNETCORE_HTTP_PORTS, ASPNETCORE_HTTPS_PORTSés ASPNETCORE_URLS környezeti változókat a kívánt portra. Példa: docker run --rm -it -p 9999:80 -e ASPNETCORE_HTTP_PORTS=80 <my-app>
  • Frissítse a meglévő parancsokat és konfigurációt, amelyek a 80-as port várt alapértelmezett portjára támaszkodnak, és ehelyett a 8080-ra hivatkoznak. Példa: docker run --rm -it -p 9999:8080 <my-app>

Ha az alkalmazás a régebbi WebHost.CreateDefaultBuilder() módszerrel készült, állítsa be ASPNETCORE_URLS (nem ASPNETCORE_HTTP_PORTS). Példa: docker run --rm -it -p 9999:80 -e ASPNETCORE_URLS=http://*:80 <my-app>

Érintett API-k

Nincs.

Lásd még