PolicyHttpMessageHandler 类

定义

DelegatingHandler 实现,执行由 Policy 包围的请求处理。

public ref class PolicyHttpMessageHandler : System::Net::Http::DelegatingHandler
public class PolicyHttpMessageHandler : System.Net.Http.DelegatingHandler
type PolicyHttpMessageHandler = class
    inherit DelegatingHandler
Public Class PolicyHttpMessageHandler
Inherits DelegatingHandler
继承
PolicyHttpMessageHandler

注解

此消息处理程序实现支持使用 Polly 库提供的策略进行暂时性故障处理和复原。

此处提供的文档重点指导如何将 Polly 与 IHttpClientFactory结合使用。 有关 Polly 的权威信息,请参阅 Polly 项目 及其文档

上的 PollyHttpClientBuilderExtensions 扩展方法设计为创建 的 PolicyHttpMessageHandler便捷正确方法。

方法 AddPolicyHandler(IHttpClientBuilder, IAsyncPolicy<HttpResponseMessage>) 支持为任何类型的策略创建 PolicyHttpMessageHandler 。 这包括非反应策略,例如超时或缓存,它们不需要基础请求首先失败。

PolicyHttpMessageHandler并且 PollyHttpClientBuilderExtensions 便利方法仅接受泛型 IAsyncPolicy`1 。 可以使用 上的 Policy 泛型方法创建泛型策略实例,例如 TimeoutAsync``1(System.Int32)

若要改编现有的非泛型 IAsyncPolicy,请使用如下所示的代码:

policy.AsAsyncPolicy<HttpResponseMessage>()

方法 AddTransientHttpErrorPolicy(IHttpClientBuilder, Func<PolicyBuilder<HttpResponseMessage>,IAsyncPolicy<HttpResponseMessage>>) 是一种便捷方法,支持对因连接失败或服务器错误而失败的请求应用策略, (5XX HTTP 状态代码) 。 此方法仅支持响应式策略,例如重试、Circuit-Breaker 或回退。 提供此方法只是为了方便起见;如果不符合要求,建议根据需要创建自己的策略。

同时使用重试或超时等策略时要小心,因为 HttpClient 通过 Timeout提供自己的超时。 将 Retry 和 Timeout 组合在一起时, Timeout 将充当所有尝试的超时;可以在配置序列中的重试策略之后配置 Polly Timeout 策略,以提供每次尝试超时。

Polly 提供的所有策略都设计为在长期使用时高效。 某些策略(如隔舱和 Circuit-Breaker 保持状态,应跨希望共享隔舱或 Circuit-Breaker 状态的调用范围。 在自定义方案中一起使用策略和消息处理程序时,请小心确保正确的生存期。 提供的 PollyHttpClientBuilderExtensions 扩展方法旨在为策略分配较长的生存期,并确保在处理程序轮换功能处于活动状态时可以使用它们。

PolicyHttpMessageHandler在执行 之前Policy, 会将上下文HttpRequestMessage附加到 (如果尚不存在)。 Context将提供给策略,以便在 和其他消息处理程序内Policy使用。

构造函数

PolicyHttpMessageHandler(Func<HttpRequestMessage,IAsyncPolicy<HttpResponseMessage>>)

创建一个新的 PolicyHttpMessageHandler

PolicyHttpMessageHandler(IAsyncPolicy<HttpResponseMessage>)

创建一个新的 PolicyHttpMessageHandler

属性

InnerHandler

获取或设置处理 HTTP 响应消息的内部处理程序。

(继承自 DelegatingHandler)

方法

Dispose()

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

(继承自 HttpMessageHandler)
Dispose(Boolean)

释放由 DelegatingHandler 使用的非托管资源,并可根据需要释放托管资源。

(继承自 DelegatingHandler)
Equals(Object)

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

(继承自 Object)
GetHashCode()

作为默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type

(继承自 Object)
MemberwiseClone()

创建当前 Object 的浅表副本。

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

将 HTTP 请求发送到内部处理程序,然后再发送到服务器。

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

异步发送 HTTP 请求到要发送到服务器的内部处理程序。

SendCoreAsync(HttpRequestMessage, Context, CancellationToken)

已在 Policy 的执行内部调用,以执行请求处理。

ToString()

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

(继承自 Object)

适用于