首页 > 解决方案 > ASP.NET Core 3.1 HttpMessageHandler 清理周期

问题描述

我在调试日志中看到这些消息:

[23:29:12 DBG] HttpMessageHandler 在 120000 毫秒后过期,客户端“默认”{“EventId”:{“Id”:103,“名称”:“HandlerExpired”},“SourceContext”:“Microsoft.Extensions.Http.DefaultHttpClientFactory "}

[23:29:22 DBG] 使用 1 个项目开始 HttpMessageHandler 清理周期 {"EventId": {"Id": 100, "Name": "CleanupCycleStart"}, "SourceContext": "Microsoft.Extensions.Http.DefaultHttpClientFactory"}

[23:29:22 DBG] 1.9126 毫秒后结束 HttpMessageHandler 清理周期 - 已处理:0 项 - 剩余:1 项 {“EventId”:{“Id”:101,“Name”:“CleanupCycleEnd”},“SourceContext”: "Microsoft.Extensions.Http.DefaultHttpClientFactory"}

[23:29:32 DBG] 使用 1 个项目开始 HttpMessageHandler 清理周期 {"EventId": {"Id": 100, "Name": "CleanupCycleStart"}, "SourceContext": "Microsoft.Extensions.Http.DefaultHttpClientFactory"}

[23:29:32 DBG] 0.1306 毫秒后结束 HttpMessageHandler 清理周期 - 已处理:0 项 - 剩余:1 项 {“EventId”:{“Id”:101,“Name”:“CleanupCycleEnd”},“SourceContext”: "Microsoft.Extensions.Http.DefaultHttpClientFactory"}

这些消息永远不会结束,但我不会在我的应用程序中使用任何这些消息。我有一些未处理的物品,为什么我总是有一件物品?

这是我的代码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
        });

标签: asp.net-corehttpclient

解决方案


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

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

"Microsoft.Extensions.Http.DefaultHttpClientFactory": "Information"

推荐阅读