在 ASP.NET Core 6.0 中, HTTPS 重定向中间件 在服务器配置中找到多个 HTTPS 端口时会引发类型 InvalidOperationException 异常。 异常的消息包含文本“无法确定来自 IServerAddressesFeature 的 https 端口,找到多个值。 在 HttpsRedirectionOptions.HttpsPort 上明确地设定你所需的端口。
有关讨论,请参阅 GitHub 问题 dotnet/aspnetcore#29222。
已引入的版本
ASP.NET Core 6.0
旧行为
当 HTTPS 重定向中间件未显式配置端口时,它会在第一个请求期间搜索 IServerAddressesFeature,以确定它应该重定向到的 HTTPS 端口。
如果没有 HTTPS 端口或多个不同的端口,则不清楚应使用哪个端口。 中间件记录警告并自动禁用。 HTTP 请求正常处理。
新行为
当 HTTPS 重定向中间件未显式配置端口时,它会在第一个请求期间搜索 IServerAddressesFeature
,以确定它应该重定向到的 HTTPS 端口。
如果没有 HTTPS 端口,中间件仍会记录警告并禁用自身。 HTTP 请求正常处理。 此行为支持:
- 没有 HTTPS 的开发方案。
- TLS 在到达服务器之前已终止的托管方案。
如果有多个不同的端口,则不清楚应使用哪个端口。 中间件会引发异常并失败 HTTP 请求。
更改原因
当已知 HTTPS 可用时,此更改可防止通过未加密的 HTTP 连接提供潜在的敏感数据。
建议的措施
若要在服务器具有多个不同的 HTTPS 端口时启用 HTTPS 重定向,必须在配置中指定一个端口。 有关详细信息,请参阅 端口配置。
如果应用中不需要 HTTPS 重定向中间件,请从UseHttpsRedirection
中删除。
如果需要动态选择正确的 HTTPS 端口,请在 GitHub 问题 dotnet/aspnetcore#21291 中提供反馈。