You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core中Header传播问题:x-request-id名称自动变更

解决.NET Core中HeaderPropagation请求头名称自动规范化的问题

默认情况下,.NET Core的HeaderPropagation中间件在传播请求头时,会自动将头名称转换为HTTP标准的规范化格式(比如把x-request-id转为X-Request-ID),这是因为HttpClient内部会对请求头名称做标准化处理,遵循HTTP头的常规命名约定。

要强制保留原始的小写请求头名称,你需要显式配置HeaderPropagationHeaderOptions,分别指定捕获的头名称和传播时使用的目标名称,而不是直接传入字符串。修改后的代码如下:

services.AddHeaderPropagation(o =>
{
    // 显式指定捕获和传播的头名称,避免自动规范化
    o.Headers.Add(new HeaderPropagationHeaderOptions
    {
        CapturedHeaderName = "x-request-id",
        OutboundHeaderName = "x-request-id"
    });
});

services.AddHttpClient<IDataProvider, UmsProvider>((sp, client) =>
{
    client.BaseAddress = new Uri("testaddress");
    client.Timeout = TimeSpan.FromMinutes(5);
}).AddHeaderPropagation();

这段代码的核心是通过HeaderPropagationHeaderOptions明确指定两个参数:

  • CapturedHeaderName:从当前传入请求中要捕获的头名称(严格匹配小写的x-request-id)
  • OutboundHeaderName:向下游请求发送时使用的头名称(同样使用小写的x-request-id)

这样配置后,中间件就不会自动对请求头名称做规范化处理,确保下游接收到的请求头名称和原始请求一致。

内容的提问来源于stack exchange,提问作者Krishna Pahlajani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 00:10:02