Код: Выделить всё
builder.Services.ConfigureHttpClientDefaults(http => {
// Turn on resilience by default
http.AddStandardResilienceHandler();
});
Я пробовал следующие варианты:
Код: Выделить всё
services.AddHttpClient()
.AddResilienceHandler("MyClient", (context, next) => {
context.AddTimeout(TimeSpan.FromMinutes(10));
});
Код: Выделить всё
.AddStandardResilienceHandler(options => {
options.AttemptTimeout = new HttpTimeoutStrategyOptions {
Timeout = TimeSpan.FromMinutes(5)
};
options.TotalRequestTimeout = new HttpTimeoutStrategyOptions {
Timeout = TimeSpan.FromMinutes(15)
};
options.CircuitBreaker.SamplingDuration = TimeSpan.FromMinutes(10);
});
Я также создал такую политику:
Код: Выделить всё
var retryPolicy = HttpPolicyExtensions
.HandleTransientHttpError()
.WaitAndRetryAsync(3, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)))
.WrapAsync(Policy.TimeoutAsync(
TimeSpan.FromMinutes(5),
TimeoutStrategy.Optimistic));
Код: Выделить всё
.AddPolicyHandler(retryPolicy)
Вы могли бы подумать, что это будет легко и документировано, но я ничего не могу найти в поиске .
Подробнее здесь: https://stackoverflow.com/questions/776 ... fic-client
Мобильная версия