Middleware: Middleware přesměrování HTTPS vyvolává výjimku na nejednoznačných portech HTTPS
V ASP.NET Core 6.0 vyvolá middleware přesměrování HTTPS výjimku typu InvalidOperationException , když v konfiguraci serveru najde více portů HTTPS. Zpráva výjimky obsahuje text "Nelze určit port https z IServerAddressesFeature, bylo nalezeno více hodnot. Nastavte požadovaný port explicitně na httpsRedirectionOptions.HttpsPort."
Diskuzi najdete v tématu o problému GitHubu dotnet/aspnetcore#29222.
Zavedená verze
ASP.NET Core 6.0
Staré chování
Pokud middleware přesměrování HTTPS není explicitně nakonfigurovaný s portem, vyhledá IServerAddressesFeature se během prvního požadavku a určí port HTTPS, do kterého se má přesměrovat.
Pokud neexistují žádné porty HTTPS nebo více různých portů, není jasné, který port by se měl použít. Middleware zaznamená upozornění a zakáže ho. Požadavky HTTP se zpracovávají normálně.
Nové chování
Pokud middleware přesměrování HTTPS není explicitně nakonfigurovaný s portem, vyhledá IServerAddressesFeature
se během prvního požadavku a určí port HTTPS, do kterého se má přesměrovat.
Pokud nejsou žádné porty HTTPS, middleware stále zaznamená upozornění a zakáže se. Požadavky HTTP se zpracovávají normálně. Toto chování podporuje:
- Vývojové scénáře bez PROTOKOLU HTTPS
- Hostované scénáře, ve kterých se protokol TLS ukončí před dosažením serveru.
Pokud existuje více různých portů, není jasné, který port by se měl použít. Middleware vyvolá výjimku a požadavek HTTP selže.
Důvod změny
Tato změna zabraňuje tomu, aby se potenciálně citlivá data obsluhovala přes nešifrovaná připojení HTTP, pokud je známo, že je k dispozici protokol HTTPS.
Doporučená akce
Pokud chcete povolit přesměrování HTTPS, pokud má server více různých portů HTTPS, musíte v konfiguraci zadat jeden port. Další informace najdete v tématu Konfigurace portu.
Pokud v aplikaci nepotřebujete middleware přesměrování HTTPS, odeberte UseHttpsRedirection
ho z Startup.cs.
Pokud potřebujete dynamicky vybrat správný port HTTPS, poskytněte nám zpětnou vazbu v problému s GitHubem dotnet/aspnetcore#21291.