.NET Framework 和 .NET Core 2.0 及更低版本中由 HttpClient 使用的預設訊息處理常式為HttpClientHandler。
從 .NET Core 2.1 開始,類SocketsHttpHandler提供了 更高級別 的 HTTP 網路類(例如HttpClient )使用的實作。使用SocketsHttpHandler提供了許多優點:
與之前的實施相比,效能顯著提高。
消除平台依賴性,從而簡化部署和服務。例如,libcurl不再依賴於 macOS 的 .NET Core 和 Linux 的 .NET Core。
所有 .NET 平台上的行為一致。
如果不需要進行此更改,並且您使用的是 .NET Core 2.1-3.1,則可以透過多種方式將應用程式配置為使用 較舊 的System.Net.Http.HttpClientHandler類:
1.透過呼叫AppContext.SetSwitch方法,如下所示:
AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false);
2.透過在.netcore.runtimeconfig.json配置檔中定義開關 System.Net.Http.UseSocketsHttpHandler :
"runtimeOptions": {
"configProperties": {
"System.Net.Http.UseSocketsHttpHandler": false
}
}
3.透過定義名為的環境變量 DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER 並將其設定為false或0。
需要註意的是,從 .NET 5 開始,這些配置選項不可用。
參考連結:
https://learn.microsoft.com/zh-cn/dotnet/api/system.net.http.httpclienthandler?view=net-8.0
https://learn.microsoft.com/en-us/dotnet/api/system.net.http.socketshttphandler?view=net-8.0
關註我獲取技術分享