using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Http.Resilience;
public static async Task Main()
var services = new ServiceCollection();
services.ConfigureHttpClientDefaults(http => {
http.AddStandardResilienceHandler(
options.AttemptTimeout.OnTimeout = args =>
Console.WriteLine(args.Timeout);
options.Retry.OnRetry = args => {
Console.WriteLine("Retry");
services.AddHttpClient("a").AddStandardResilienceHandler(
options.AttemptTimeout = new HttpTimeoutStrategyOptions {
Timeout = TimeSpan.FromMilliseconds(200)
options.AttemptTimeout.OnTimeout = args =>
Console.WriteLine(args.Timeout);
options.Retry.OnRetry = args => {
Console.WriteLine("Retry");
ServiceProvider serviceProvider = services.BuildServiceProvider();
IHttpClientFactory factory = serviceProvider.GetRequiredService<IHttpClientFactory>();
var clientA = factory.CreateClient("a");
await clientA.GetAsync("https://httpstat.us/200?sleep=5000");