Varsayılan ASP.NET Çekirdek bağlantı noktası 80'den 8080'e değiştirildi
.NET kapsayıcı görüntülerinde yapılandırılan varsayılan ASP.NET Core bağlantı noktası 80 numaralı bağlantı noktasından 8080'e güncelleştirildi.
Ayrıca yeni ASPNETCORE_HTTP_PORTS
ortam değişkenini öğesine daha basit bir alternatif olarak ekledik ASPNETCORE_URLS
. Yeni değişken, bağlantı noktası numaralarının noktalı virgülle ayrılmış listesini beklerken, eski değişken daha karmaşık bir söz dizimi bekler.
Eski WebHost.CreateDefaultBuilder() API kullanılarak oluşturulan uygulamalar yeni ASPNETCORE_HTTP_PORTS
ortam değişkenine saygı duymaz. Artık otomatik olarak ayarlanmadıklarındanASPNETCORE_URLS
, daha önce olduğu gibi yerine http://*:80
varsayılan URL'sini http://localhost:5000
kullanmaya geçecektir.
Önceki davranış
.NET 8'in öncesinde, 80 numaralı bağlantı noktasının varsayılan bağlantı noktası olmasını ve çalışan uygulamaya erişebilmesini bekleyebilecek bir kapsayıcı çalıştırabilirsiniz.
Örneğin, aşağıdaki komutu çalıştırabilir ve ardından uygulamaya kapsayıcıdaki 80 numaralı bağlantı noktasıyla eşlenen 8000 numaralı bağlantı noktasından yerel olarak erişebilirsiniz:
docker run --rm -it -p 8000:80 <my-app>
Yeni davranış
.NET 8'den başlayarak, kapsayıcıda kullanılan ASP.NET Core bağlantı noktasını açıkça 80 olarak ayarlamadan kapsayıcıdaki 80 numaralı bağlantı noktasına eşlerseniz, bu eşlenen bağlantı noktasına bağlanma girişimleri başarısız olur.
Örneğin, aşağıdaki komutu çalıştırırsanız 8000 numaralı bağlantı noktasını kullanarak uygulamaya yerel olarak bağlanamazsınız .
docker run --rm -it -p 8000:80 <my-app>
Bunun yerine komutunu kapsayıcı içinde 8080 numaralı bağlantı noktasını kullanacak şekilde değiştirin:
docker run --rm -it -p 8000:8080 <my-app>
Davranış farkını aşağıdaki örneklerde görebilirsiniz.
Eşleme bağlantı noktası 80
(hata durumu):
$ 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
Eşleme bağlantı noktası 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
Bağlantı noktası olarak 80
ASPNETCORE_HTTP_PORTS
ayarlanmış eşleme bağlantı noktası 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
Sürüm kullanıma sunulmuştur
.NET 8 Preview 1
Değişiklik türü
Bu değişiklik davranışsal bir değişikliktir.
Değişiklik nedeni
Bir kullanıcıya geçiş non-root
yaparken iyi bir kullanılabilirlik deneyimi sağlama gereksinimi nedeniyle bağlantı noktası numarasında değişiklik yapıldı. Kullanıcı olarak non-root
çalışmak için bazı ortamlarda ayrıcalıklı olmayan bir bağlantı noktasının kullanılması gerekir. Önceki varsayılan bağlantı noktası olan 80 numaralı bağlantı noktası ayrıcalıklı bir bağlantı noktası olduğundan, varsayılan değer ayrıcalıklı olmayan bir bağlantı noktası olan 8080 numaralı bağlantı noktasına güncelleştirildi.
Önerilen eylem
Bu hataya neden olan değişikliğe yanıt vermenin iki yolu vardır:
- (Önerilen eylem) , ve
ASPNETCORE_HTTPS_PORTS
ASPNETCORE_URLS
ortam değişkenlerini açıkça istenen bağlantı noktasına ayarlayınASPNETCORE_HTTP_PORTS
. Örnek:docker run --rm -it -p 8000:80 -e ASPNETCORE_HTTP_PORTS=80 <my-app>
- Bunun yerine 80 numaralı bağlantı noktasının beklenen varsayılan bağlantı noktasını kullanan mevcut komutları ve yapılandırmayı 8080 numaralı bağlantı noktasına başvurmak için güncelleştirin. Örnek:
docker run --rm -it -p 8000:8080 <my-app>
Uygulamanız eski WebHost.CreateDefaultBuilder() yöntem kullanılarak oluşturulduysa ayarlayın ASPNETCORE_URLS
(değil ASPNETCORE_HTTP_PORTS
). Örnek: docker run --rm -it -p 8000:80 -e ASPNETCORE_URLS=http://*:80 <my-app>
.
Kubernetes veya Docker Compose kullanıyorsanız, bağlantı noktasını bu şemalara göre değiştirmeniz gerekir. Örnekler için bkz . Kubernetes ile .NET kullanma.
ASP.NET Core kapsayıcı uygulamanızı barındırmak için Azure kapsayıcı hizmetlerini kullanıyorsanız, kapsayıcı ortamınızı istediğiniz bağlantı noktasını ayarlamak için güncelleştirmeniz gerekir:
- Azure Uygulaması Hizmeti için CLI kullanarak veya portalda ayarlayın.
WEBSITES_PORT
- Azure Container Apps için kaynak oluşturma işleminin bir parçası olarak bağlantı noktasını değiştirebilirsiniz.
- Azure Container Instances için kaynak oluşturma işleminin bir parçası olarak bağlantı noktasını değiştirebilirsiniz.
Etkilenen API’ler
Yok.