SocketsHttpHandler 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供 .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
- 继承
- 属性
注解
从 .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 |
获取或设置传播分布式跟踪和上下文时要使用的传播器。
使用 |
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 实例创建自定义 Meter 的 IMeterFactory。 |
PlaintextStreamFilter |
获取或设置一个自定义回调,该回调提供对纯文本 HTTP 协议流的访问。 |
PooledConnectionIdleTimeout |
获取或设置连接在池中可以空闲多长时间才能被视为可重用。 |
PooledConnectionLifetime |
获取或设置连接在池中可被视为可重用的时间。 |
PreAuthenticate |
获取或设置一个值,该值指示处理程序是否使用请求发送授权标头。 |
Properties |
获取 HttpClient 请求的自定义属性的可写字典(即映射)。 字典初始化为空;可以为自定义处理程序和特殊处理插入和查询键值对。 |
Proxy |
获取或设置 UseProxy 属性 |
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) |