中介軟體:HTTPS 重新導向中介軟體會在不明確的 HTTPS 連接埠上擲回例外狀況

在 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 重新導向中介軟體,請從 Startup.cs 中移除 UseHttpsRedirection

如果您需要動態選取正確的 HTTPS 連接埠,請在 GitHub 問題 dotnet/aspnetcore#21291中提供意見反應。

受影響的 API

HttpsPolicyBuilderExtensions.UseHttpsRedirection