【发布时间】:2020-10-24 10:26:50
【问题描述】:
我有几个相互协作的 RESTful 服务。在一种情况下,我想将一些数据从一个服务发布到另一个服务,并且我想在请求的 Header 中附加一些信息。我看到了几个这样做的案例,最后我想出了这个解决方法:
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
此实现基于此tutorial。
【问题讨论】:
-
为什么不在这里添加标题;
var httpRequestMessage = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = new Uri(service2Address), Content = new StringContent(JsonConvert.SerializeObject(obj)) }; -
嗨@CasperDijkstra,在
httpRequestMessage的初始化中或之后添加标题对输出没有影响。
标签: asp.net-core .net-core asp.net-core-webapi