.NET Framework 和 .NET Core 2.0 及更低版本中由 HttpClient 使用的預設消息處理程式為HttpClientHandler。 從 .NET Core 2.1 開始,類SocketsHttpHandler提供了更高級別的 HTTP 網路類(例如HttpClient ...
.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 開始,這些配置選項不可用。