IHttpClientFactory 日志中的 URI 查询和片段编辑

在 .NET 9 中,日志记录 URI 信息时,已修改默认实现 IHttpClientFactory 以清理查询字符串。 此更改通过防止记录查询字符串中包含的潜在敏感信息,同时将修订的性能成本保持在最低水平,从而增强隐私。 对于需要记录查询字符串且认为安全的情况,可以替代此行为。

引入的版本

.NET 9 预览版 7

旧行为

以前,日志记录的默认实现 IHttpClientFactory 包括在传递给 ILogger的消息中的查询字符串,这可能会无意中公开敏感信息。

新行为

传递给 ILogger 的消息现在已将查询和片段部分替换为 * 字符。

中断性变更的类型

此更改为行为更改

更改原因

此更改的主要原因是通过降低无意中记录敏感信息的风险来增强隐私。 查询字符串通常包含敏感数据,并默认从日志中排除它们有助于保护此信息。 为了保持实现简单高效,片段部分也进行了清理。

如果应用程序依赖于日志记录查询字符串,并且确信可以安全地执行此操作,可以通过以下三种方式之一设置 AppContext 开关来全局启用查询字符串日志记录:

  • 在项目文件中。

    <ItemGroup>
      <RuntimeHostConfigurationOption Include="System.Net.Http.DisableUriRedaction" Value="true" />
    </ItemGroup>
    
  • 在 runtimeconfig.json 文件中。

    {
        "runtimeOptions": {
            "configProperties": {
                "System.Net.Http.DisableUriRedaction": true
            }
        }
    }
    
  • 通过环境变量。

    DOTNET_SYSTEM_NET_HTTP_DISABLEURIREDACTION 设置为 true 或 1。

否则,无需执行任何操作,默认行为将有助于增强应用程序的隐私方面。

注意

此开关还会在 EventSource 事件中 HttpClient 禁用查询字符串修订。 有关详细信息,请参阅 HttpClient EventSource 事件中的 URI 查询修订。

受影响的 API