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 不再是 .NET Core for macOS 和 .NET Core for Linux 的依赖项。

  • 跨所有 .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 连接。

Expect100ContinueTimeout

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

InitialHttp2StreamWindowSize

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

IsSupported

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

KeepAlivePingDelay

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

KeepAlivePingPolicy

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

KeepAlivePingTimeout

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

MaxAutomaticRedirections

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

MaxConnectionsPerServer

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

MaxResponseDrainSize

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

MaxResponseHeadersLength

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

MeterFactory

获取或设置 IMeterFactory ,以便为 SocketsHttpHandler 实例创建自定义Meter

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)

适用于