use*_*018 -1 c# dotnet-httpclient polly asp.net-core retry-logic
当出现 HttpRequestException、5XX 和 408 错误时,下面的代码重试 2 次,并且工作正常。
这里我想重试一下是否有401错误?我们如何通过 Polly 实现这一目标?
services.AddHttpClient(Options.DefaultName)
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler { })
.AddPolicyHandler(HttpPolicyExtensions.HandleTransientHttpError()
.WaitAndRetryAsync(2, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt))));
Run Code Online (Sandbox Code Playgroud)
添加.OrResult(r => r.StatusCode == System.Net.HttpStatusCode.Unauthorized)到您的代码:
services.AddHttpClient(Options.DefaultName)
.ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler { })
.AddPolicyHandler(HttpPolicyExtensions.HandleTransientHttpError()
.OrResult(r => r.StatusCode == System.Net.HttpStatusCode.Unauthorized)
.WaitAndRetryAsync(2, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt))));
Run Code Online (Sandbox Code Playgroud)
我建议像这样重写您的代码以使其更易于阅读:
services.AddHttpClient(Options.DefaultName)
.AddTransientHttpErrorPolicy(builder =>
builder
.OrResult(r => r.StatusCode == System.Net.HttpStatusCode.Unauthorized)
.WaitAndRetryAsync(2, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt))))
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1015 次 |
| 最近记录: |