亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法從托管服務中的緩存附加身份驗證令牌

無法從托管服務中的緩存附加身份驗證令牌

C#
大話西游666 2023-09-16 17:37:43
我是 .net 的新手,我真的很想了解應用程序的這種行為。我有一個名為的函數GetOrg(),它基本上請求 API 端點并獲取數據,以獲取我需要在每個請求中傳遞身份驗證令牌的數據。為了獲取身份驗證令牌,我有另一個函數調用來GetAccessToken獲取令牌并將其保存在緩存中。我創建了一個名稱httpclient,它將令牌附加到 NonProductionEnv客戶端的每個請求?,F在的問題是,當我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 端點?,F在正在偵聽: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 及其工作原理。
查看完整描述

1 回答

?
森林海

TA貢獻2011條經驗 獲得超2個贊

您正在使用應用程序啟動時HttpClient從緩存中檢索的靜態值進行注冊。此時,您的托管服務尚未運行,因此緩存中還沒有任何價值。一旦緩存中最終有一個值,標頭早已被設置,并且您永遠不會重置它。


這里實際上完全不需要緩存。您也不需要Authorization在實際的客戶端注冊中設置標頭。相反,只需將您的GetAccessToken方法修改為:


private void GetAccessToken(object state)

{

    Dictionary<string, string> authenticationCredentials_np = Configuration.GetSection("NonProductionEnvironment:Credentials").GetChildren().Select(x => new KeyValuePair<string, string>(x.Key, x.Value)).ToDictionary(x => x.Key, x => x.Value);

    Token token_np = GetToken(new Uri(Configuration["NonProductionEnvironment:URL"]), authenticationCredentials_np).Result;


    _client_NP.DefaultRequestHeaders.Add("Authorization", $"Bearer {token_np.AccessToken}");

}


查看完整回答
反對 回復 2023-09-16
  • 1 回答
  • 0 關注
  • 111 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號