外部 API を呼び出していますが、特定の応答 ( BadGateway、Unauthorized、ServiceUnavailableなど)を再試行したいと考えています。2回目の再試行の後、それは言う
タスクがキャンセルされました (「タスクがキャンセルされました」) なぜですか?
Polly
次のコードで使用しようとしています。
try
{
await Policy.HandleResult<HttpResponseMessage>(r => _reTryHttpStatusCodes.Contains(r.StatusCode))
.WaitAndRetryAsync(new[] {
TimeSpan.FromSeconds(1),
TimeSpan.FromSeconds(2),
TimeSpan.FromSeconds(4)
})
.ExecuteAsync(async () =>
{
responseMessage = await base.SendAsync(request, cancellationToken);
return responseMessage;
}
);
return null;
}
catch (Exception ex)
{
if (IsTransientException(ex))
{
throw new HttpRequestException("Exception Occured", ex);
}
throw;
}
private readonly HttpStatusCode[] _reTryHttpStatusCodes =
new[]
{
HttpStatusCode.BadGateway,
HttpStatusCode.GatewayTimeout,
HttpStatusCode.ServiceUnavailable,
HttpStatusCode.RequestTimeout,
HttpStatusCode.Unauthorized
};