Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在RetryPolicy上使用策略包装<;HttpResponseMessage>;?_C#_Asp.net_Polly - Fatal编程技术网

C# 如何在RetryPolicy上使用策略包装<;HttpResponseMessage>;?

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

我有以下使用Polly.Extensions.Http的重试策略:

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)