Asp.net core NetCore 3.1 PostAsync自定义标头不工作
我有几个RESTful服务可以相互协作。在一个场景中,我希望将一些数据从一个服务发布到另一个服务,并希望在请求的头中附加一些信息。我看到了几个这样做的案例,最后我提出了以下解决方法: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
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
或之后添加标头时,对输出没有影响。