HttpRequestMessage不允许使用Authorization标头值

时间:2018-10-10 16:37:32

标签: c# .net httpclient

我正在尝试重用我的HttpClient实例,这是最佳实践。
因此,在一个特定的请求中,我想在请求上设置Authorization头,而不是在客户端上进行全局设置。从我读过的所有内容来看,这应该有效:

var request = new HttpRequestMessage(HttpMethod.Get, url);
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
var response = await _client.SendAsync(request);

这会编译,但是在我尝试调用它时会抛出该异常。我得到的例外是:

  

“标头名称滥用。请确保请求标头与   HttpRequestMessage,带有HttpResponseMessage的响应标头和   带有HttpContent对象的内容标题。”

我很困惑为什么只允许抛出请求消息时就可以在请求消息上设置该值,而且我也没有找到解决方法。
我尝试使用TryAddWithoutValidation直接添加标头,但仍然遇到相同的异常(甚至没有像我期望的那样返回false!)

我怀疑这可能是框架中的错误,因为许多人已经发布了这个确切的代码,没有明显的问题,但是会对任何见解/解决方法感兴趣。

1 个答案:

答案 0 :(得分:1)

事实证明,由于存在其他错误,“令牌”的值为null。如果您遇到此问题,我建议您先检查一下:请注意,错误消息是100%的谎言。