gpt4 book ai didi

asp.net-web-api - 默认请求 header 不接受任何值,它始终为空

转载 作者:行者123 更新时间:2023-12-04 12:57:43 25 4
gpt4 key购买 nike

我正在做一个 web api 集成测试。

我想将我的不记名 token 传递给 Http 请求的 header :

httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "eJ43k5l435j34l5j43l5j34l5jl35j34l5j344l.4534535.534534sample...");

当这行代码完成后,我会查看 httpClient.DefaultRequestHeaders.Authorization属性,它是 NULL 吗?

为什么这个?

更新

这是来自我的集成测试类的基类:
 protected HttpClient Client { get { return server.HttpClient; } }

当我在测试类中手动新建一个 http 客户端时:
var client = new HttpClient();
client.DefaultRequestHeaders.Add("key","value");

它有效但不适用于我的客户!?

更新 2

好的,我发现了这一点:
 var c = Client;
c.DefaultRequestHeaders.Add("bla", "bla");

它有效,但为什么我必须在新变量中读取我的客户端?

最佳答案

我读过(在一篇我找不到的文章中,抱歉)HttpClient 上的 Auth header (尤其是在内存中的 TestServer 主机中,它显然无法处理经过身份验证的服务,因此对我来说似乎没用?参见 https://blog.kloud.com.au/2014/10/26/asp-net-web-api-integration-testing-with-one-line-of-code/”不幸的是,内存中的解决方案对我来说开箱即用。似乎它无法处理身份验证。我在 webapi 中使用 UseJwtBearerAuthentication(JWT 承载 token 中间件)和我的 api 调用结果 401") 仅 GET -我遇到了同样的问题,试图对经过身份验证的端点进行集成测试 - 我得到了不记名 token ,将其添加到标题中,但在下一行代码中,它是 NULL。

我找到的建议(以及我得到的解决方案)是将 Bearer header 添加到 HttpRequestMessage header ,而不是 HttpClient header ,然后使用 HttpClient.SendAsync 而不是 HttpClient.PostAsync(显然,无论出于何种原因,它都会发布正文内容但不是标题)。

我已经浪费了太多时间试图解决这个问题,而且你发现的大多数教程都没有处理 auth header ,所以我很惊讶更多人不讨论这个问题(当然,假设我不仅仅是一个木偶)。但是,是的,尝试将您的身份验证 header 添加到请求消息中,而不是 http 客户端。

关于asp.net-web-api - 默认请求 header 不接受任何值,它始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32129254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com