1

我试图在构造函数中实现用于处理 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 一起使用,这是我的通用类,但效果不佳。我究竟做错了什么 ?谢谢你。

4

2 回答 2

1

它应该按如下方式工作:

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

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

于 2018-11-14T17:43:26.370 回答
0

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

private RetryPolicy<HttpResponseMessage> Retry { get; }
于 2018-11-14T14:16:14.727 回答