第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

無(wú)法從托管服務(wù)中的緩存附加身份驗(yàn)證令牌

無(wú)法從托管服務(wù)中的緩存附加身份驗(yàn)證令牌

C#
大話西游666 2023-09-16 17:37:43
我是 .net 的新手,我真的很想了解應(yīng)用程序的這種行為。我有一個(gè)名為的函數(shù)GetOrg(),它基本上請(qǐng)求 API 端點(diǎn)并獲取數(shù)據(jù),以獲取我需要在每個(gè)請(qǐng)求中傳遞身份驗(yàn)證令牌的數(shù)據(jù)。為了獲取身份驗(yàn)證令牌,我有另一個(gè)函數(shù)調(diào)用來(lái)GetAccessToken獲取令牌并將其保存在緩存中。我創(chuàng)建了一個(gè)名稱(chēng)httpclient,它將令牌附加到 NonProductionEnv客戶(hù)端的每個(gè)請(qǐng)求?,F(xiàn)在的問(wèn)題是,當(dāng)我GetOrg()在托管服務(wù)中設(shè)置時(shí),如下所示,它不會(huì)附加令牌并請(qǐng)求沒(méi)有身份驗(yàn)證令牌的 API 端點(diǎn),但如果我GetOrg()在控制器中設(shè)置,它就可以正常工作。啟動(dòng)時(shí)指定的客戶(hù)端:    services.AddHttpClient("NonProductionEnv", client =>{    client.BaseAddress = new Uri(Configuration["NonProductionEnvironment:NP_API_URL"]);    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", (String)_cache.Get("np"));});下面的日志每秒生成一次,因?yàn)槲倚枰棵胝{(diào)用 api 端點(diǎn)?,F(xiàn)在正在偵聽(tīng):https://localhost:5001現(xiàn)在正在偵聽(tīng): http://localhost:5000應(yīng)用程序已啟動(dòng)。按 Ctrl+C 關(guān)閉。信息:System.Net.Http.HttpClient.NonProductionEnv.LogicalHandler[100] 開(kāi)始處理 HTTP 請(qǐng)求 GET https://api.sample.io/v3/organizations信息:System.Net.Http.HttpClient.NonProductionEnv.ClientHandler[100]發(fā)送 HTTP 請(qǐng)求 GET https://api.sample.io/v3/organizations信息:System.Net.Http.HttpClient.NonProductionEnv.ClientHandler[101] 在 53.3973ms 后收到 HTTP 響應(yīng) - 未經(jīng)授權(quán)PS:我不太了解.net 及其工作原理。
查看完整描述

1 回答

?
森林海

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊

您正在使用應(yīng)用程序啟動(dòng)時(shí)HttpClient從緩存中檢索的靜態(tài)值進(jìn)行注冊(cè)。此時(shí),您的托管服務(wù)尚未運(yùn)行,因此緩存中還沒(méi)有任何價(jià)值。一旦緩存中最終有一個(gè)值,標(biāo)頭早已被設(shè)置,并且您永遠(yuǎn)不會(huì)重置它。


這里實(shí)際上完全不需要緩存。您也不需要Authorization在實(shí)際的客戶(hù)端注冊(cè)中設(shè)置標(biāo)頭。相反,只需將您的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}");

}


查看完整回答
反對(duì) 回復(fù) 2023-09-16
  • 1 回答
  • 0 關(guān)注
  • 122 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)