Error when specifying a HttpMessageHandler - System.InvalidOperationException : No service for type 'RetryDelegatingHandler' has been registered.
I created a custom HttpMessageHandler to handle the retry logic in my HttpClient. (I know that I could have used Polly but what is the fun in that?)
I registered the HttpMessageHandler as part of my typed http client like this:
However when I ran my application it failed with the following error:
System.InvalidOperationException : No service for type ‘Reliability.RetryDelegatingHandler' has been registered.
Stack Trace:
ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
<>c__4`1.<AddHttpMessageHandler>b__4_1(HttpMessageHandlerBuilder b)
<>c__DisplayClass17_0.<CreateHandlerEntry>g__Configure|0(HttpMessageHandlerBuilder b)
<>c__DisplayClass3_0.<Configure>b__0(HttpMessageHandlerBuilder builder)
DefaultHttpClientFactory.CreateHandlerEntry(String name)
<.ctor>b__1()
Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
Lazy`1.CreateValue()
<7 more frames...>
CallSiteRuntimeResolver.VisitDisposeCache(ServiceCallSite transientCallSite, RuntimeResolverContext context)
CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope)
<>c__DisplayClass2_0.<RealizeService>b__0(ServiceProviderEngineScope scope)
ServiceProvider.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope)
ServiceProvider.GetService(Type serviceType)
ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
To use the generic AddHttpMessageHandler<T> I need to register the handler through the IoC container:
As an alternative I can use another overload and instantiate the handler myself: