Asp.net core NetCore 3.1 PostAsync自定义标头不工作

Asp.net core NetCore 3.1 PostAsync自定义标头不工作,asp.net-core,.net-core,asp.net-core-webapi,Asp.net Core,.net Core,Asp.net Core Webapi,我有几个RESTful服务可以相互协作。在一个场景中,我希望将一些数据从一个服务发布到另一个服务,并希望在请求的头中附加一些信息。我看到了几个这样做的案例,最后我提出了以下解决方法: var httpClient = new HttpClient(); httpClient.Timeout = TimeSpan.FromMinutes(3); var httpRequestMessage = new HttpRequestMessage { Method = HttpMethod.Pos

我有几个RESTful服务可以相互协作。在一个场景中,我希望将一些数据从一个服务发布到另一个服务,并希望在请求的头中附加一些信息。我看到了几个这样做的案例,最后我提出了以下解决方法:

var httpClient = new HttpClient();
httpClient.Timeout = TimeSpan.FromMinutes(3);
var httpRequestMessage = new HttpRequestMessage {
    Method = HttpMethod.Post,
    RequestUri = new Uri(service2Address),
    Content = new StringContent(JsonConvert.SerializeObject(obj))
};

httpRequestMessage.Headers.Add("myCustomHeaderKey", "myCustomHeaderValue");

var response = await httpClient.SendAsync(httpRequestMessage);

var responseString = await response.Content.ReadAsStringAsync();
通过这些代码行,发送了
Post
请求,但在
service2
中,当我想从请求中获取标题时,标题集合中没有
myCustomHeaderKey
的迹象。我在Visual Studio Watch中检查
Request.Headers
,甚至尝试使用
Request.Headers[“myCustomHeaderKey”]
获取自定义头。那么这里怎么了

编辑1

此实现基于此。

我已经开发了类似于您的代码。已使用标准模板创建了两个Asp.net core 3.1项目。一个服务启动localhost:44320,另一个启动localhost:44300 localhost:44320/PostService编写了您的代码

然后使用浏览器获取此url。localhost:44320/weatherforecast/IncomeService功能如下

最后,我将断点放在获取请求头的位置。结果如下所示


这不是问题。也许您可以使用变更请求头中间件。或者如果您正在使用类似nginx的东西。这个问题可能是nginx配置的问题。

我已经开发了类似于您的代码。已使用标准模板创建了两个Asp.net core 3.1项目。一个服务启动localhost:44320,另一个启动localhost:44300 localhost:44320/PostService编写了您的代码

然后使用浏览器获取此url。localhost:44320/weatherforecast/IncomeService功能如下

最后,我将断点放在获取请求头的位置。结果如下所示


这不是问题。也许您可以使用变更请求头中间件。或者如果您正在使用类似nginx的东西。这个问题可能是nginx配置的问题。

为什么不在这里添加标题
var-httpRequestMessage=new-httpRequestMessage{Method=HttpMethod.Post,RequestUri=new-Uri(service2Address),Content=new-StringContent(JsonConvert.SerializeObject(obj))}
Hi@CasperDijkstra,在初始化
httpRequestMessage
或之后添加标头时,对输出没有影响。为什么不在此处添加标头
var-httpRequestMessage=new-httpRequestMessage{Method=HttpMethod.Post,RequestUri=new-Uri(service2Address),Content=new-StringContent(JsonConvert.SerializeObject(obj))}
Hi@CasperDijkstra,在初始化
httpRequestMessage
或之后添加标头时,对输出没有影响。