public ref class SocketsHttpHandler sealed : System::Net::Http::HttpMessageHandler
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public sealed class SocketsHttpHandler : System.Net.Http.HttpMessageHandler
public sealed class SocketsHttpHandler : System.Net.Http.HttpMessageHandler
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
type SocketsHttpHandler = class
inherit HttpMessageHandler
type SocketsHttpHandler = class
inherit HttpMessageHandler
Public NotInheritable Class SocketsHttpHandler
Inherits HttpMessageHandler
SocketsHttpHandler
从 .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
类:
通过调用
AppContext.SetSwitch
方法,如下所示:
AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", false);
AppContext.SetSwitch("System.Net.Http.UseSocketsHttpHandler", False)
通过在 .netcore.runtimeconfig.json 配置文件中定义 System.Net.Http.UseSocketsHttpHandler
开关:
"runtimeOptions": {
"configProperties": {
"System.Net.Http.UseSocketsHttpHandler": false
定义名为 DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER
的环境变量并将其设置为 false
或 0。
从 .NET 5 开始,这些配置选项不可用。