0

我正在使用Polly发出 HTTP 请求并在请求失败时重试 5 次。

当 5 次尝试都失败并且策略放弃时,是否可以指定一个操作?

在下面的代码中;当我们失败 5 次时,我知道用户没有互联网,所以我想显示一个消息框,上面写着“应用程序需要互联网”。我可以使用计数器来计算 5 次失败,但使用 Polly 方法会更好。

var policy = Polly.Policy.Handle<Exception>().WaitAndRetryAsync(
   5,
   retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)),
   (ex, span) =>
   {
       Mvx.Trace("Retried because of {0}", ex);
   }
);

await policy.ExecuteAsync(() => MakeRequestEx<T>(requestUrl, verb, accept, headers, baseAddress)).ConfigureAwait(false);
4

1 回答 1

1

是的,您可以使用ExecuteAndCapture

var policyResult = await policy.ExecuteAndCaptureAsync(
    () => MakeRequestEx<T>(requestUrl, verb, accept, headers, baseAddress)
).ConfigureAwait(false);

Outcome然后,您可以检查policyResult以检查呼叫是否失败并显示消息。

有关更多信息,请参阅https://github.com/michael-wolfenden/Polly#post-execution-steps

于 2015-10-05T11:25:42.130 回答