Как переопределить 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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