SocketsHttpHandler 类

定义

提供 .NET Core 2.1 及更高版本中 HttpClient 使用的默认消息处理程序。

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 开始,这些配置选项不可用。

构造函数

SocketsHttpHandler()

创建 SocketsHttpHandler 类的实例。

属性

ActivityHeadersPropagator

获取或设置传播分布式跟踪和上下文时要使用的传播器。 使用 null 禁用传播。

AllowAutoRedirect

获取或设置一个值,该值指示处理程序是否应遵循重定向响应。

AutomaticDecompression

获取或设置处理程序用于自动解压缩 HTTP 内容响应的解压缩方法的类型。

ConnectCallback

获取或设置用于打开新连接的自定义回调。

ConnectTimeout

获取或设置在建立超时的连接之前要等待的时间跨度。

CookieContainer

获取或设置托管 Cookie 容器对象。

Credentials

获取或设置此处理程序使用的身份验证信息。

DefaultProxyCredentials

使用默认(系统)代理时,获取或设置用于提交到默认代理服务器进行身份验证的凭据。

EnableMultipleHttp2Connections

获取或设置一个值,该值指示是否可以建立到同一服务器的其他 HTTP/2 连接。

EnableMultipleHttp3Connections

获取或设置一个值,该值指示是否可以建立到同一服务器的其他 HTTP/3 连接。

Expect100ContinueTimeout

获取或设置服务器 HTTP 100 Continue 响应的超时值。

InitialHttp2StreamWindowSize

定义此 SocketsHttpHandler打开的所有连接的初始 HTTP2 流接收窗口大小。

IsSupported

获取一个值,该值指示当前平台上是否支持处理程序。

KeepAlivePingDelay

获取或设置保持活动 ping 延迟。

KeepAlivePingPolicy

获取或设置保持活动 ping 行为。

KeepAlivePingTimeout

获取或设置保持活动 ping 超时。

MaxAutomaticRedirections

获取或设置允许的最大 HTTP 重定向数。

MaxConnectionsPerServer

获取或设置单个服务器允许的最大同时 TCP 连接数。

MaxResponseDrainSize

获取或设置可从响应中排空的最大数据量(以字节为单位)。

MaxResponseHeadersLength

获取或设置响应标头的最大长度(以千字节(1024 字节为单位)。

MeterFactory

获取或设置为 SocketsHttpHandler 实例创建自定义 MeterIMeterFactory

PlaintextStreamFilter

获取或设置一个自定义回调,该回调提供对纯文本 HTTP 协议流的访问。

PooledConnectionIdleTimeout

获取或设置连接在池中可以空闲多长时间才能被视为可重用。

PooledConnectionLifetime

获取或设置连接在池中可被视为可重用的时间。

PreAuthenticate

获取或设置一个值,该值指示处理程序是否使用请求发送授权标头。

Properties

获取 HttpClient 请求的自定义属性的可写字典(即映射)。 字典初始化为空;可以为自定义处理程序和特殊处理插入和查询键值对。

Proxy

获取或设置 UseProxy 属性 true时的自定义代理。

RequestHeaderEncodingSelector

获取或设置一个回调,该回调选择要对请求标头值进行编码的 Encoding

ResponseDrainTimeout

获取或设置等待数据从响应中清空的时间跨度。

ResponseHeaderEncodingSelector

获取或设置一个回调,该回调选择用于解码响应标头值的 Encoding

SslOptions

获取或设置用于客户端 TLS 身份验证的选项集。

UseCookies

获取或设置一个值,该值指示处理程序是否应使用 Cookie。

UseProxy

获取或设置一个值,该值指示处理程序是否应使用代理。

方法

Dispose()

释放非托管资源并释放 HttpMessageHandler使用的托管资源。

(继承自 HttpMessageHandler)
Dispose(Boolean)

释放 HttpMessageHandler 使用的非托管资源,并选择性地释放托管资源。

(继承自 HttpMessageHandler)
Equals(Object)

确定指定的对象是否等于当前对象。

(继承自 Object)
GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
Send(HttpRequestMessage, CancellationToken)

在派生类中重写时,使用指定的请求和取消令牌发送 HTTP 请求。 否则,将引发 NotSupportedException

(继承自 HttpMessageHandler)
SendAsync(HttpRequestMessage, CancellationToken)

以异步操作的形式发送 HTTP 请求。

(继承自 HttpMessageHandler)
ToString()

返回一个表示当前对象的字符串。

(继承自 Object)

适用于