我是 .net 的新手,我真的很想了解应用程序的这种行为。我有一个名为的函数GetOrg()
,它基本上请求 API 端点并获取数据,以获取我需要在每个请求中传递身份验证令牌的数据。为了获取身份验证令牌,我有另一个函数调用来GetAccessToken
获取令牌并将其保存在缓存中。我创建了一个名称httpclient
,它将令牌附加到 NonProductionEnv
客户端的每个请求。
现在的问题是,当我GetOrg()
在托管服务中设置时,如下所示,它不会附加令牌并请求没有身份验证令牌的 API 端点,但如果我GetOrg()
在控制器中设置,它就可以正常工作。
启动时指定的客户端:
services.AddHttpClient("NonProductionEnv", client =>
{
client.BaseAddress = new Uri(Configuration["NonProductionEnvironment:NP_API_URL"]);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", (String)_cache.Get("np"));
});
下面的日志每秒生成一次,因为我需要每秒调用 api 端点。
现在正在侦听:https://localhost:5001现在正在侦听: http://localhost:5000应用程序已启动。按 Ctrl+C 关闭。信息:System.Net.Http.HttpClient.NonProductionEnv.LogicalHandler[100] 开始处理 HTTP 请求 GET https://api.sample.io/v3/organizations信息:System.Net.Http.HttpClient.NonProductionEnv.ClientHandler[100]发送 HTTP 请求 GET https://api.sample.io/v3/organizations信息:System.Net.Http.HttpClient.NonProductionEnv.ClientHandler[101] 在 53.3973ms 后收到 HTTP 响应 - 未经授权
PS:我不太了解.net 及其工作原理。
森林海
相关分类