Closed as not planned
Description
Description
It seems that IHttpClientFactory
doesn't support newly added #64427.
Reproduction Steps
var services = new ServiceCollection();
var httpClientBuilder = services
.AddHttpClient("named");
httpClientBuilder.Services.TryAddKeyedSingleton<MyClientLogger>(httpClientBuilder.Name);
httpClientBuilder.AddLogger(sp => sp.GetRequiredKeyedService<HttpClientLogger>(httpClientBuilder.Name));
using var provider = services.BuildServiceProvider();
var httpClientFactory = provider.GetRequiredService<IHttpClientFactory>();
using var httpClient = httpClientFactory.CreateClient("named");
And MyLogger
simply implements IHttpClientLogger
.
Expected behavior
No exception is thrown.
Actual behavior
System.InvalidOperationException
is thrown with the next message: This service provider doesn't support keyed services.
Stack Trace:
ServiceProviderKeyedServiceExtensions.GetRequiredKeyedService(IServiceProvider provider, Type serviceType, Object serviceKey)
ServiceProviderKeyedServiceExtensions.GetRequiredKeyedService[T](IServiceProvider provider, Object serviceKey)
<>c__DisplayClass25_0.<Test_test>b__0(IServiceProvider sp) line 773
<>c__DisplayClass27_0.<AddLogger>b__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()
DefaultHttpClientFactory.CreateHandler(String name)
DefaultHttpClientFactory.CreateClient(String name)
MyTests.Test() line 778
RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
MethodInvoker.Invoke(Object obj, IntPtr* args, BindingFlags invokeAttr)
Regression?
No response
Known Workarounds
No response
Configuration
.NET SDK 8.0.100-preview.7.23360.1
I was referencing runtime packages with version 8.0.0-rc.1.23373.2
.
Other information
I haven't tried, but the same issue could probably be the case when ConfigureHttpClientDefaults()
is used and in its configure
action a keyed service is registered/resolved.