首页 > 解决方案 > 在 WaitAndRetryAsync 之后返回实际错误代码

问题描述

我是 Polly 的新手,我有一个问题。

当我使用该WaitAndRetryAsync方法时,在最后重试之后,正确的错误代码不会返回给客户端。它总是返回超时错误。

我怎样才能解决这个问题?

这是我的重试策略:

protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
    return Policy
        .Handle<HttpRequestException>()
        .Or<TaskCanceledException>()
        .OrResult<HttpResponseMessage>((x => !x.IsSuccessStatusCode || x.StatusCode == HttpStatusCode.NotFound), x =>
        {
            string errorCodeString = string.Format("HTTP Error Code:{0} Reason:{1}", x.StatusCode, x.ReasonPhrase);
            Log.Debug(errorCodeString);
        })
        .WaitAndRetryAsync<HttpResponseMessage>(MaxRetries, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)), (ex, timeSpan) =>
        {
            string error = string.Format("HTTP request failure {0}. Retrying in {1} seconds", request.RequestUri.ToString(), request.timeSpan.TotalSeconds);
            Log.Debug(error);
        })
        .ExecuteAsync(() => base.SendAsync(request, cancellationToken));
}

任何能让我指出正确方向的帮助都会很棒。谢谢!

标签: c#polly

解决方案


推荐阅读