Как переопределить AddStandardResilenceHandler() для конкретного клиента?C#

Место общения программистов C#
Anonymous
Как переопределить AddStandardResilenceHandler() для конкретного клиента?

Сообщение Anonymous »

При условии, что по умолчанию для всех клиентов в проекте C# установлено следующее:

Код: Выделить всё

builder.Services.ConfigureHttpClientDefaults(http => {
// Turn on resilience by default
http.AddStandardResilienceHandler();

});
Как переопределить значения этого StandardResilienceHandler для конкретного Клиента?
Я пробовал следующие варианты:

Код: Выделить всё

    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

Вернуться в «C#»