ASP.NET Core 3.1 HttpMessageHandler cleanup cycle

Fed*_*87p 3 httpclient asp.net-core

I see these messages in my debug log:

[23:29:12 DBG] HttpMessageHandler expired after 120000ms for client 'default' {"EventId": {"Id": 103, "Name": "HandlerExpired"}, "SourceContext": "Microsoft.Extensions.Http.DefaultHttpClientFactory"}

[23:29:22 DBG] Starting HttpMessageHandler cleanup cycle with 1 items {"EventId": {"Id": 100, "Name": "CleanupCycleStart"}, "SourceContext": "Microsoft.Extensions.Http.DefaultHttpClientFactory"}

[23:29:22 DBG] Ending HttpMessageHandler cleanup cycle after 1.9126ms - processed: 0 items - remaining: 1 items {"EventId": {"Id": 101, "Name": "CleanupCycleEnd"}, "SourceContext": "Microsoft.Extensions.Http.DefaultHttpClientFactory"}

[23:29:32 DBG] Starting HttpMessageHandler cleanup cycle with 1 items {"EventId": {"Id": 100, "Name": "CleanupCycleStart"}, "SourceContext": "Microsoft.Extensions.Http.DefaultHttpClientFactory"}

[23:29:32 DBG] Ending HttpMessageHandler cleanup cycle after 0.1306ms - processed: 0 items - remaining: 1 items {"EventId": {"Id": 101, "Name": "CleanupCycleEnd"}, "SourceContext": "Microsoft.Extensions.Http.DefaultHttpClientFactory"}

These messages never end, but I do not use any of those in my application. I have some undisposed object, why do I always have one item?

This is my code in Startup.cs:

services.AddHttpClient("default", c =>
        {
            c.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate");
            c.Timeout = TimeSpan.FromMinutes(120);
        }).ConfigurePrimaryHttpMessageHandler(() => new HttpClientHandler
        {
            Proxy = WebRequest.DefaultWebProxy,
            AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip
        });
Run Code Online (Sandbox Code Playgroud)

Fei*_*Han 7

这个 github issue讨论了一个类似的问题,它似乎是默认行为。

如果您不想获取Microsoft.Extensions.Http.DefaultHttpClientFactory类别的日志,您可以将其设置为“信息”和更高的日志级别。

"Microsoft.Extensions.Http.DefaultHttpClientFactory": "Information"
Run Code Online (Sandbox Code Playgroud)