C # Polly для обработки ошибок HTTP-ответов - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь реализовать в конструкторе Polly для обработки HTTP-статусов ошибок, но я получаю сообщение об ошибке: неуниверсальный метод нельзя использовать с аргументами типа.Я использовал код с их сайта, хотя.Вот оно:

 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 голосов
/ 14 ноября 2018

Он должен работать следующим образом:

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

.OrResult(...) не нуждается в аргументах универсального типа, поскольку предложение .Handle<HttpResponseMessage>(...) уже связало политику для обработки результатов типа HttpResponseMessage.

0 голосов
/ 14 ноября 2018

Исправьте определение повторения, указав тип:

private RetryPolicy<HttpResponseMessage> Retry { get; }
...