Code: Select all
builder.Services.ConfigureHttpClientDefaults(http => {
// Turn on resilience by default
http.AddStandardResilienceHandler();
});
Ich habe die folgenden Variationen ausprobiert:
Code: Select all
services.AddHttpClient()
.AddResilienceHandler("MyClient", (context, next) => {
context.AddTimeout(TimeSpan.FromMinutes(10));
});
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);
});
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));
Code: Select all
.AddPolicyHandler(retryPolicy)
Man könnte meinen, das wäre einfach und dokumentiert, aber ich kann in der Suche nichts finden .