Wie überschreibt man AddStandardResilenceHandler() für einen bestimmten Client?C#

Ein Treffpunkt für C#-Programmierer
Guest
 Wie überschreibt man AddStandardResilenceHandler() für einen bestimmten Client?

Post by Guest »

Angenommen, Folgendes ist als Standard für alle Clients im C#-Projekt festgelegt:

Code: Select all

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

});
Wie überschreibt man die Werte dieses StandardResilienceHandlers für einen bestimmten Client?
Ich habe die folgenden Variationen ausprobiert:

Code: Select all

    services.AddHttpClient()
.AddResilienceHandler("MyClient", (context, next) => {
context.AddTimeout(TimeSpan.FromMinutes(10));
});
ignoriert

Code: Select all

.AddStandardResilienceHandler(options => {
options.AttemptTimeout = new HttpTimeoutStrategyOptions {
Timeout = TimeSpan.FromMinutes(5)
};
options.TotalRequestTimeout = new HttpTimeoutStrategyOptions {
Timeout = TimeSpan.FromMinutes(15)
};
options.CircuitBreaker.SamplingDuration = TimeSpan.FromMinutes(10);
});
Auch ignoriert.
Ich habe auch eine Richtlinie wie diese erstellt:

Code: Select all

var retryPolicy = HttpPolicyExtensions

.HandleTransientHttpError()
.WaitAndRetryAsync(3, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)))
.WrapAsync(Policy.TimeoutAsync(
TimeSpan.FromMinutes(5),
TimeoutStrategy.Optimistic));
und dann Folgendes verwendet:

Code: Select all

.AddPolicyHandler(retryPolicy)
Es wird immer noch die Standardeinstellung verwendet, egal was passiert.
Man könnte meinen, das wäre einfach und dokumentiert, aber ich kann in der Suche nichts finden .

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post