Middleware: il middleware di reindirizzamento HTTPS genera un'eccezione sulle porte HTTPS ambigue
In ASP.NET Core 6.0, il middleware di reindirizzamento HTTPS genera un'eccezione di tipo InvalidOperationException quando trova più porte HTTPS nella configurazione del server. Il messaggio dell'eccezione contiene il testo "Impossibile determinare la porta https da IServerAddressesFeature, sono stati trovati più valori. Impostare la porta desiderata in modo esplicito su HttpsRedirectionOptions.HttpsPort".
Per la discussione, consultare il problema di GitHub dotnet/aspnetcore#29222.
Versione di introduzione
ASP.NET Core 6.0
Comportamento precedente
Quando il middleware di reindirizzamento HTTPS non è configurato in modo esplicito con una porta, cerca IServerAddressesFeature durante la prima richiesta per determinare la porta HTTPS a cui deve essere reindirizzato.
Se non sono presenti porte HTTPS o più porte distinte, non è chiaro quale porta deve essere usata. Il middleware registra un avviso e si disabilita. Le richieste HTTP vengono elaborate normalmente.
Nuovo comportamento
Quando il middleware di reindirizzamento HTTPS non è configurato in modo esplicito con una porta, cerca IServerAddressesFeature
durante la prima richiesta per determinare la porta HTTPS a cui deve essere reindirizzato.
Se non sono presenti porte HTTPS, il middleware registra comunque un avviso e si disabilita. Le richieste HTTP vengono elaborate normalmente. Questo comportamento supporta:
- Scenari di sviluppo senza HTTPS.
- Scenari ospitati in cui TLS viene terminato prima di raggiungere il server.
Se non sono presenti più porte distinte, non è chiaro quale porta deve essere usata. Il middleware genera un'eccezione e non riesce la richiesta HTTP.
Motivo della modifica
Questa modifica impedisce la gestione di dati potenzialmente sensibili su connessioni HTTP non crittografate quando si sa che HTTPS è disponibile.
Azione consigliata
Per abilitare il reindirizzamento HTTPS quando il server dispone di più porte HTTPS distinte, è necessario specificare una porta nella configurazione. Per ulteriori informazioni, vedere Configurazione porta.
Se non è necessario il middleware di reindirizzamento HTTPS nell'app, rimuovere UseHttpsRedirection
da Startup.cs.
Se è necessario selezionare la porta HTTPS corretta in modo dinamico, inviare commenti e suggerimenti nel problema di GitHub dotnet/aspnetcore#21291.