C# 如何在RetryPolicy上使用策略包装<;HttpResponseMessage>;?
我有以下使用Polly.Extensions.Http的重试策略:C# 如何在RetryPolicy上使用策略包装<;HttpResponseMessage>;?,c#,asp.net,polly,C#,Asp.net,Polly,我有以下使用Polly.Extensions.Http的重试策略: var retryPolicy = Policy.Handle<BrokenCircuitException>().OrTransientHttpError().WaitAndRetryAsync ( retryCount: maxRetryCount, sleepDurationProvider: att
var retryPolicy = Policy.Handle<BrokenCircuitException>().OrTransientHttpError().WaitAndRetryAsync
(
retryCount: maxRetryCount,
sleepDurationProvider: attempt => TimeSpan.FromSeconds(Math.Pow(2, attempt)),
onRetryAsync: (exception, calculatedWaitDuration, retryCount, context) =>
{
//Code
}
);
这是一个错误:
无法从“Polly.Retry.RetryPolicy”转换为“Polly.IAsyncPolicy”
当策略配置使用时,策略被配置为处理返回的执行HttpResponseMessage
这使得返回的策略类型满足泛型接口IAsyncPolicy
,而不是非泛型IAsyncPolicy
要使用创建泛型PolicyWrap
,必须明确指定泛型类型参数:
Policy.WrapAsync<HttpResponseMessage>(retryPolicy, circuitBreaker, sharedBulkhead)
Polly文档涵盖了非通用策略和通用策略之间的区别,一般来说,在和中
Policy.WrapAsync(retryPolicy, circuitBreaker, sharedBulkhead);
Policy.WrapAsync<HttpResponseMessage>(retryPolicy, circuitBreaker, sharedBulkhead)
retryPolicy.WrapAsync(circuitBreaker).WrapAsync(sharedBulkhead)