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

In ASP.NET Core 6.0 löst die HTTPS-Umleitungs-Middleware eine Ausnahme vom Typ InvalidOperationException aus, wenn mehrere HTTPS-Ports in der Serverkonfiguration gefunden werden. Die Meldung der Ausnahme enthält den Text "Https-Port von IServerAddressesFeature kann nicht ermittelt werden, mehrere Werte wurden gefunden. Legen Sie den gewünschten Port explizit auf HttpsRedirectionOptions.HttpsPort fest."

Weitere Diskussionen finden Sie auf der GitHub-Issue-Seite dotnet/aspnetcore#29222.

Eingeführt in Version

ASP.NET Core 6.0

Altes Verhalten

Wenn die HTTPS-Umleitungs-Middleware nicht explizit mit einem Port konfiguriert ist, durchsucht IServerAddressesFeature sie während der ersten Anforderung, um den HTTPS-Port zu ermitteln, an den sie umgeleitet werden soll.

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 normal verarbeitet.

Neues Verhalten

Wenn die HTTPS-Umleitungs-Middleware nicht explizit mit einem Port konfiguriert ist, durchsucht IServerAddressesFeature sie während der ersten Anforderung, um den HTTPS-Port zu ermitteln, an den sie umgeleitet werden soll.

Wenn keine HTTPS-Ports vorhanden sind, protokolliert die Middleware weiterhin eine Warnung und deaktiviert sich selbst. HTTP-Anforderungen werden normal verarbeitet. Dieses Verhalten unterstützt Folgendes:

  • Entwicklungsszenarien ohne HTTPS.
  • Gehostete Szenarien, in denen TLS beendet wird, bevor sie den Server erreichen.

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

Grund für Änderung

Diese Änderung verhindert, dass potenziell vertrauliche Daten über unverschlüsselte HTTP-Verbindungen bereitgestellt werden, wenn bekannt ist, dass HTTPS verfügbar ist.

Um die HTTPS-Umleitung zu aktivieren, wenn der Server über mehrere unterschiedliche HTTPS-Ports verfügt, müssen Sie einen Port in der Konfiguration angeben. Weitere Informationen finden Sie unter Portkonfiguration.

Wenn Sie die HTTPS-Umleitungs-Middleware in Ihrer App nicht benötigen, entfernen Sie UseHttpsRedirection sie aus Startup.cs.

Wenn Sie den richtigen HTTPS-Port dynamisch auswählen müssen, geben Sie Feedback in GitHub problem dotnet/aspnetcore#21291.

Betroffene APIs

HttpsPolicyBuilderExtensions.UseHttpsRedirection