【问题标题】:Specify Giveup/Failure Action指定放弃/失败操作
【发布时间】:2015-10-05 04:56:58
【问题描述】:

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

【问题讨论】:

    标签: c# http polly


    【解决方案1】:

    是的,你可以使用ExecuteAndCapture

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

    然后您可以检查policyResultOutcome 以检查调用是否失败并显示消息。

    请参阅https://github.com/michael-wolfenden/Polly#post-execution-steps 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      • 1970-01-01
      • 2015-07-29
      • 2021-10-01
      • 2015-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多