Compartilhar via


Middleware: middleware de redirecionamento de HTTPS gera exceção em portas HTTPS ambíguas

No ASP.NET Core 6.0, o Middleware de redirecionamento de HTTPS gera uma exceção de tipo InvalidOperationException quando encontra várias portas HTTPS na configuração do servidor. A mensagem da exceção contém o texto "Não é possível determinar a porta https de IServerAddressesFeature, vários valores foram encontrados. Defina a porta desejada explicitamente em HttpsRedirectionOptions.HttpsPort."

Para ver a discussão, confira o problema do GitHub dotnet/aspnetcore#29222.

Versão introduzida

ASP.NET Core 6.0

Comportamento antigo

Quando o Middleware de redirecionamento de HTTPS não estiver explicitamente configurado com uma porta, ele pesquisará IServerAddressesFeature durante a primeira solicitação para determinar a porta HTTPS para a qual deverá redirecionar.

Se não houver portas HTTPS ou várias portas distintas, não estará claro qual porta usar. O middleware registrará um aviso e se desabilitará. As solicitações HTTP são processadas normalmente.

Novo comportamento

Quando o Middleware de redirecionamento de HTTPS não estiver explicitamente configurado com uma porta, ele pesquisará IServerAddressesFeature durante a primeira solicitação para determinar a porta HTTPS para a qual deverá redirecionar.

Se não houver portas HTTPS, o middleware ainda registrará um aviso e se desabilitará. As solicitações HTTP são processadas normalmente. Esse comportamento dá suporte a:

  • Cenários de desenvolvimento sem HTTPS.
  • Cenários hospedados nos quais o TLS é encerrado antes de chegar ao servidor.

Se houver várias portas distintas, não estará claro qual porta usar. O middleware gera uma exceção e falha na solicitação HTTP.

Motivo da alteração

Essa alteração impedirá que os dados potencialmente confidenciais sejam atendidos em conexões HTTP não criptografadas quando o HTTPS estiver disponível.

Para habilitar o redirecionamento de HTTPS quando o servidor tiver várias portas HTTPS distintas, será necessário especificar uma porta na configuração. Para obter mais informações, consulte Configuração de porta.

Se o middleware de redirecionamento de HTTPS não for necessário no aplicativo, remova UseHttpsRedirection de Startup.cs.

Se você precisar selecionar a porta HTTPS correta dinamicamente, forneça os comentários no problema do GitHub dotnet/aspnetcore#21291.

APIs afetadas

HttpsPolicyBuilderExtensions.UseHttpsRedirection