指定Giveup / Failure Action

时间:2015-10-05 04:56:58

标签: c# http polly

我正在使用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);

1 个答案:

答案 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