【问题标题】:Remove http client logging handler in ASP.NET Core删除 ASP.NET Core 中的 http 客户端日志记录处理程序
【发布时间】:2018-10-19 09:44:18
【问题描述】:

在使用 .NET Core 的HttpClientFactory 时,是否可以以某种方式移除默认的LoggingHttpMessageHandler

我期待类似下面的东西,但它似乎不存在

services.AddHttpClient("minos")
   .RemoveHttpMessageHandler<LoggingHttpMessageHandler>();

【问题讨论】:

    标签: c# asp.net-core httpclient


    【解决方案1】:

    你可以在appsettings.json中配置HttpClient的日志级别为none

    但是,这也将启用来自所有其他 系统根命名空间中的组件。因此,最好 通过将配置限制为来配置日志记录 “System.Net.Http.HttpClient”,以便您只添加来自的消息 通过 HttpClientFactory 创建的客户端的 HTTP 请求:

        {
          "Logging": {
            "LogLevel": {
              "Default": "Warning",
              "System.Net.Http.HttpClient": "Information"
            }
          }
        }
    

    https://www.stevejgordon.co.uk/httpclientfactory-asp-net-core-logging

    【讨论】:

    • 谢谢你,但我不想只删除日志,我想从管道中删除整个中间件(或消息处理程序)以便更快。我在 github 上发表了评论,他们给了我一个我还没有尝试过的解决方案
    • 我更喜欢这个解决方案。这样我们就可以将日志级别更改为错误。而不是从 httpclient 完全删除所有日志
    • 但问题是如何删除它(这可能是出于任何正当理由),而不是您是否喜欢它:)
    【解决方案2】:

    对于任何需要这个的人,我在 github repo 上打开了一个问题,其中一位贡献者回复了以下内容(我仍然需要尝试)

            foreach (var service in serviceCollection.Where(s => s.ServiceType == typeof(IHttpMessageHandlerFactory)))
            {
                serviceCollection.Remove(service);
            }
    

    更新: 改用以下内容(以上内容不完全)

    services.RemoveAll<IHttpMessageHandlerBuilderFilter>();
    

    https://github.com/aspnet/HttpClientFactory/issues/196#issuecomment-431440889

    【讨论】:

      猜你喜欢
      • 2011-11-21
      • 2011-07-07
      • 2014-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-22
      • 2013-11-11
      相关资源
      最近更新 更多