.netcore2.1 添加Policy异常、重试、超时策略
使用NuGet包管理添加Microsoft.Extensions.Http.Polly引用,项目是.netcore2.1版本,因此Polly添加也是2.1版本,如自己.netcore版本比较高,可以选择高版本,目前最新的是3.1版本。
using Microsoft.Extensions.DependencyInjection; using Polly; using System; using System.Collections.Generic; using System.Linq; using System.Net.Http; using System.Threading.Tasks; namespace MyProject.Extentions { public static class HttpRetryExtension { public static void AddRetryProxy<TCient>(this IServiceCollection services) where TCient : class { //重试策略 var retryPolicy = Policy.Handle<HttpRequestException>()//指定要处理的异常 .Or<Exception>() .OrResult<HttpResponseMessage>(res => { return res.StatusCode != System.Net.HttpStatusCode.OK; })//返回结果不是Ok重试 .WaitAndRetryAsync( //指定重试次数 sleepDurations: new[] { TimeSpan.FromMilliseconds(100), TimeSpan.FromMilliseconds(200), TimeSpan.FromMilliseconds(300) }, //出异常会执行以下代码 onRetry: (exception, ts, context) => { Console.WriteLine($"polly.retry:exMsg={ exception.Exception?.Message}, {ts.Minutes * 60 + ts.Seconds}"); }); //超时策略 var timeoutPolicy = Policy.TimeoutAsync<HttpResponseMessage>(30);//超时30秒重试 services.AddHttpClient<TCient>() .AddPolicyHandler(retryPolicy) .AddPolicyHandler(timeoutPolicy); } } }
在Startup类中ConfigureServices方法,对需要重试请求的http请求Service添加注入即可。
public void ConfigureServices(IServiceCollection services) { //http services.AddRetryProxy<IdentityOCRService>();
标签:
.netcore
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律