我正在使用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);
答案 0 :(得分:1)
是的,您可以使用ExecuteAndCapture
var policyResult = await policy.ExecuteAndCaptureAsync(
() => MakeRequestEx<T>(requestUrl, verb, accept, headers, baseAddress)
).ConfigureAwait(false);
然后,您可以检查Outcome
的{{1}}以检查通话是否失败并显示消息。
有关详细信息,请参阅https://github.com/michael-wolfenden/Polly#post-execution-steps。