基于Yarp裁剪的支持请求转发 和 影子流量 的HTTP代理组件
- Service Register
builder.Services.AddHttpForwarder(options =>{options.MaxRetries=3;options.ShadowSendExceptionHandler=async(url,times,request,error)=>{awaitglobal::System.Console.Out.WriteLineAsync($"地址:{url}的请求发生第{times}次异常 原因:{error}");awaitValueTask.CompletedTask;};});- Using
IHttpForwarder
app.Run(async(ctx)=>{ctx.Request.EnableBuffering();varforward=ctx.RequestServices.GetRequiredService<IHttpForwarder>();awaitforward.SendAsync(ctx,new[]{"http://demo1.example.com","http://demo2.example.com"},(u,m)=>{Console.WriteLine("此处可以调整请求相关参数,注意:一次修改主请求和影子请求都生效(注意不要重复设置)");returnValueTask.CompletedTask;});});