C#Polly处理错误的HTTP响应

时间:2018-11-14 12:18:33

标签: c# http polly

我试图在构造函数中实现用于处理HTTP错误状态的Polly,但出现错误消息:非泛型方法不能与类型参数一起使用。我虽然使用了他们网站上的代码。在这里:

 public BaseApiManager()
        {
           Retry = Policy.HandleResult<HttpResponseMessage>(r => r.StatusCode == HttpStatusCode.InternalServerError)
                        .OrResult<HttpResponseMessage>(r => r.StatusCode == HttpStatusCode.BadGateway)
                        .WaitAndRetry(3, retryAttempt => TimeSpan.FromSeconds(5));
        }

错误在第二行“ OrResult”上。我还尝试将其与ApiResponse一起使用,这是我的通用类,但效果不佳。 我究竟做错了什么 ?谢谢。

2 个答案:

答案 0 :(得分:0)

更正您的重试定义指定类型:

private RetryPolicy<HttpResponseMessage> Retry { get; }

答案 1 :(得分:0)

它应该如下工作:

Policy.HandleResult<HttpResponseMessage>(r => r.StatusCode == HttpStatusCode.InternalServerError)
                    .OrResult(r => r.StatusCode == HttpStatusCode.BadGateway)
                    .WaitAndRetry(3, retryAttempt => TimeSpan.FromSeconds(5));

.OrResult(...)不需要泛型类型参数,因为.Handle<HttpResponseMessage>(...)子句已经将策略绑定为处理类型HttpResponseMessage的结果。