【问题标题】:HttpRequestMessage won't allow Authorization header valueHttpRequestMessage 不允许 Authorization 标头值
【发布时间】:2018-10-10 16:37:31
【问题描述】:

我正在尝试重用我的 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!)

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

【问题讨论】:

  • 客户端是否已经设置了默认授权标头?
  • 哪一行准确地引发了错误。发送还是当你设置标题?
  • 好的,去挖掘源代码,看看设置该属性时会发生什么
  • 好的。乐意效劳。我建议删除这个问题。
  • 好的,请注意。你检查TryAddWithoutValidation 的布尔结果是否返回true?

标签: c# .net httpclient


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-07-09
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 2021-01-17
    • 2021-06-11
    • 1970-01-01
    • 2014-08-16
    相关资源
    最近更新 更多