正確的使用 HttpClient (遠端 SSL 憑證無效問題)

為工作紀錄。解決遠端 SSL 憑證無效的錯誤問題。IHttpClientFactory, AddHttpClient

引言

.NET Core 的 HttpClient的資源釋放做的不完美,在 Dispose 後還會有殘留,官方解法是另設計了一個 IHttpClientFactory來統一管理。

總之,就是不要直接用 HttpClient 建構,改透過 IHttpClientFactory 間接建構 httpClient 物件。

HttpClientarrow-up-right 的連線集區會連結至基礎 SocketsHttpHandlerarrow-up-right。 當您處置 HttpClientarrow-up-right 執行個體時,其會處置集區內的所有現有連線。 如果您稍後將要求傳送至相同的伺服器,則必須重新建立新的連線。 因此,不必要的連線建立會產生效能損失。 此外,連線關閉之後,不會立即釋放 TCP 連接埠。 (如需詳細資訊,請參閱 RFC 9293arrow-up-right 中的 TCP TIME-WAIT。)如果要求率很高,則可能會耗盡可用連接埠的作業系統限制。 若要避免連接埠耗盡問題,建議arrow-up-right您盡可能重複使用多個 HTTP 要求的 HttpClientarrow-up-right 執行個體。

參考文件

官方 HtppClient 標準答案。

環境

IDE:Visual Studio 2022

平台:.NET6

相依套件

程式碼紀錄:法一

為每個存取目標網站,撰寫相應的存取服務。

程式碼紀錄:法二

注入 IHttpClientFactory 建構 HttpClient 等相關資料實作高階的、商業邏輯等級的通訊指令。

Last updated