Dela via


Standardporten ASP.NET Core har ändrats från 80 till 8080

Standardporten ASP.NET Core som konfigurerats i .NET-containeravbildningar har uppdaterats från port 80 till 8080.

Vi har också lagt till den nya ASPNETCORE_HTTP_PORTS miljövariabeln som ett enklare alternativ till ASPNETCORE_URLS. Den nya variabeln förväntar sig en semikolonavgränsad lista över portnummer, medan den äldre variabeln förväntar sig en mer komplicerad syntax.

Appar som skapats med det äldre WebHost.CreateDefaultBuilder() API:et respekterar inte den nya ASPNETCORE_HTTP_PORTS miljövariabeln. Och nu när ASPNETCORE_URLS inte längre anges automatiskt växlar de till att använda en standard-URL http://localhost:5000för , i stället http://*:80för , som tidigare.

Tidigare beteende

Innan .NET 8 kan du köra en container som förväntade sig att port 80 skulle vara standardporten och komma åt appen som körs.

Du kan till exempel köra följande kommando och sedan komma åt appen lokalt på port 8000, som är mappad till port 80 i containern:

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

Nytt beteende

Från och med .NET 8 misslyckas alla försök att ansluta till den mappade porten om du mappar till port 80 i containern utan att uttryckligen ange den ASP.NET Core-port som används i containern till 80.

Om du till exempel kör följande kommando kan du inte ansluta till programmet lokalt med port 8000.

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

Ändra i stället kommandot så att port 8080 används i containern:

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

Du kan se skillnaden i beteende i följande exempel.

Mappningsport 80 (felfall):

$ 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

Mappningsport 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

Mappa port 80 med ASPNETCORE_HTTP_PORTS inställd på 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 introducerad

Förhandsversion 1 av .NET 8

Typ av ändring

Den här ändringen är en beteendeförändring.

Orsak till ändringen

Ändringen av portnumret gjordes på grund av behovet av att tillhandahålla en bra användbarhetsupplevelse när du byter till en non-root användare. Om du kör som användare non-root måste du använda en icke-privilegierad port i vissa miljöer. Eftersom port 80, den tidigare standardporten, är en privilegierad port uppdaterades standardvärdet till port 8080, som är en port som inte är privilegierad.

Det finns två sätt att svara på den här icke-bakåtkompatibla ändringen:

  • (Rekommenderad åtgärd) Ange ASPNETCORE_HTTP_PORTSuttryckligen miljövariablerna , ASPNETCORE_HTTPS_PORTSoch ASPNETCORE_URLS till önskad port. Exempel: docker run --rm -it -p 8000:80 -e ASPNETCORE_HTTP_PORTS=80 <my-app>
  • Uppdatera befintliga kommandon och konfigurationer som förlitar sig på den förväntade standardporten för port 80 för att referera till port 8080 i stället. Exempel: docker run --rm -it -p 8000:8080 <my-app>

Om appen har skapats med den äldre WebHost.CreateDefaultBuilder() metoden anger du ASPNETCORE_URLS (inte ASPNETCORE_HTTP_PORTS). Exempel: docker run --rm -it -p 8000:80 -e ASPNETCORE_URLS=http://*:80 <my-app>.

Om du använder Kubernetes eller Docker Compose måste du ändra porten enligt dessa scheman. Exempel finns i Använda .NET med Kubernetes.

Om du använder Azure-containertjänster som värd för din ASP.NET Core-containerapp måste du uppdatera containermiljön för att ange önskad port:

  • För Azure App Service anger du WEBSITES_PORTmed hjälp av CLI eller i portalen.
  • För Azure Container Apps kan du ändra porten som en del av resursskapandet.
  • För Azure Container Instances kan du ändra porten som en del av resursskapandet.

Berörda API:er

Inga.

Se även