Polly.Extensions.Http icon indicating copy to clipboard operation
Polly.Extensions.Http copied to clipboard

Exception when adding multiple PolicyHandler

Open angelaki opened this issue 4 years ago • 1 comments

With the current .net Version 6.0 I get this exception on execution when adding multiple PolicyHandlers:

An item with the same key has already been added. Key: PolicyHttpMessageHandler.PriorResponse.

Right now I'm adding these two PoliciHandlers to my IHttpClientBuilder:

    .AddPolicyHandler(GetRetryPolicy())
    .AddPolicyHandler(GetTimeoutPolicy())

    public IAsyncPolicy<HttpResponseMessage> GetRetryPolicy(int retryCount = 5)
        => HttpPolicyExtensions
            .HandleTransientHttpError()
            .Or<TimeoutRejectedException>()
            .OrResult(msg => msg.StatusCode == System.Net.HttpStatusCode.NotFound)
            .OrResult(msg => msg.StatusCode == System.Net.HttpStatusCode.Unauthorized)
            .WaitAndRetryAsync(retryCount, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt - 1)))
        ;

    public IAsyncPolicy<HttpResponseMessage> GetTimeoutPolicy(TimeSpan? timeout = null)
        => Policy.TimeoutAsync<HttpResponseMessage>(timeout ?? TimeSpan.FromSeconds(100));

Is this a known issue? It was working before .net 6.0.

angelaki avatar Nov 01 '21 12:11 angelaki

It seams to be a .Net issue since no Polly lib needs to be involved. I've created an issue there, too:

https://github.com/dotnet/runtime/issues/61056

angelaki avatar Nov 01 '21 12:11 angelaki