2

外部 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
        };
4

0 に答える 0