如何使用Polly为HttpClient配置401错误与TransientHttpError共同重试策略
实现方案
原有代码调用的HttpPolicyExtensions.HandleTransientHttpError()是Polly预置的便捷策略方法,默认仅覆盖三类错误场景:
- HttpRequestException请求异常
- 5xx服务端错误状态码
- 408请求超时状态码
要新增对401未授权错误的重试触发,只需要在原有策略基础上追加401状态码的匹配规则即可,修改后的代码如下:
services.AddHttpClient(Options.DefaultName) .ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler { }) .AddPolicyHandler(HttpPolicyExtensions.HandleTransientHttpError() // 新增匹配401未授权状态码 .OrResult(response => response.StatusCode == System.Net.HttpStatusCode.Unauthorized) .WaitAndRetryAsync(2, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt))));
注意:如果你的业务中401错误由访问令牌过期导致,不建议直接使用上述无逻辑重试,可在重试回调中增加令牌刷新逻辑,确保重试请求携带有效凭证,减少无效请求。
内容的提问来源于stack exchange,提问作者user584018
相关产品推荐
相关产品推荐

