PolicyHttpMessageHandler 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
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
- 继承
注解
此消息处理程序实现支持使用 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使用。
构造函数
属性
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) |