Middleware: HTTPS-Umleitungsmiddleware löst Ausnahme für mehrdeutige HTTPS-Ports aus

In ASP.NET Core 6.0 löst die HTTPS-Umleitungsmiddleware eine Ausnahme des Typs InvalidOperationException aus, wenn mehrere HTTPS-Ports in der Serverkonfiguration gefunden werden. Die Ausnahmemeldung lautet „Cannot determine the https port from IServerAddressesFeature, multiple values were found. Set the desired port explicitly on HttpsRedirectionOptions.HttpsPort.“ (Der HTTPS-Port von IServerAddressesFeature konnte nicht ermittelt werden, da mehrere Werte gefunden wurden. Legen Sie den gewünschten Port explizit in HttpsRedirectionOptions.HttpsPort fest.).

Weitere Informationen finden Sie im GitHub-Issue dotnet/aspnetcore#29222.

Eingeführt in Version

ASP.NET Core 6.0

Altes Verhalten

Wenn die HTTPS-Umleitungsmiddleware nicht explizit mit einem Port konfiguriert ist, durchsucht sie IServerAddressesFeature während der ersten Anforderungen, um den HTTPS-Port für die Umleitung zu ermitteln.

Wenn keine HTTPS-Ports oder mehrere unterschiedliche Ports vorhanden sind, ist unklar, welcher Port verwendet werden soll. Die Middleware protokolliert eine Warnung und deaktiviert sich selbst. HTTP-Anforderungen werden wie gewohnt verarbeitet.

Neues Verhalten

Wenn die HTTPS-Umleitungsmiddleware nicht explizit mit einem Port konfiguriert ist, durchsucht sie IServerAddressesFeature während der ersten Anforderungen, um den HTTPS-Port für die Umleitung zu ermitteln.

Wenn keine HTTPS-Ports vorhanden sind, protokolliert die Middleware ebenfalls eine Warnung und deaktiviert sich selbst. HTTP-Anforderungen werden wie gewohnt verarbeitet. Dieses Verhalten ermöglicht:

  • Entwicklungsszenarios ohne HTTPS
  • Hostingszenarios, in denen TLS vor dem Erreichen des Servers beendet wird

Wenn mehrere unterschiedliche Ports vorhanden sind, ist unklar, welcher Port verwendet werden soll. Die Middleware löst eine Ausnahme aus, und die HTTP-Anforderung ist nicht erfolgreich.

Grund für die Änderung

Durch diese Änderung wird verhindert, dass potenziell vertrauliche Daten über unverschlüsselte HTTP-Verbindungen verarbeitet werden, wenn auch eine HTTPS-Verbindung verfügbar wäre.

Wenn auf dem Server mehrere unterschiedliche HTTPS-Ports vorhanden sind, können Sie die HTTPS-Umleitung nur aktivieren, wenn Sie einen Port in der Konfiguration angeben. Weitere Informationen finden Sie unter Portkonfiguration.

Wenn Sie keine HTTPS-Umleitungsmiddleware in Ihrer App benötigen, entfernen Sie UseHttpsRedirection aus Startup.cs.

Wenn Sie den richtigen HTTPS-Port dynamisch auswählen müssen, hinterlassen Sie Feedback im GitHub-Issue dotnet/aspnetcore#21291.

Betroffene APIs

HttpsPolicyBuilderExtensions.UseHttpsRedirection