c# - 在 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));
}
任何能让我指出正确方向的帮助都会很棒。谢谢!
解决方案
推荐阅读
- internet-explorer - 我的 vue 应用程序在 IE 中抛出错误“对象不支持属性或方法“包含””
- python - 如何使用 Python 从 AWS Lambda 检索格式正确的 JSON
- java - 在 Kotlin 中读取 ZipInputStream
- sql - Postgres:带有 GROUP BY 的子查询
- c# - 检测是否发送了 EventHub 消息
- mysql - MySQL 对文本字段按问题分组(字段包含 HTML)
- python - 如何绘制一组曲线的不确定性界限,其中每条曲线的时间步长不一致
- vb.net - 搜索 MS Access 并在 VB.Net 文本框中显示
- docker - Hyperledger Composer - Docker Swarm
- c# - 令牌中有句点时的 JProperty SelectToken