![](/img/trans.png)
[英]HttpClient.GetAsync hangs then internet disappears during its execution
[英]HttpClient.GetAsync() hangs until timeout
我想從 TMDB 網站獲取電影圖像鏈接。 我正在使用 Entity Framework Core 5,MVC
但是當我在 getImageLink() 方法中調用 API 時,它不會 go 越過這一行:
var 任務 = 等待 httpClient.GetAsync(url).ConfigureAwait(false);
我假設問題可能與死鎖或使用 HttpClient 有關
使用 (var httpClient = new HttpClient())
幾天前它工作得很好,但是當我今天啟動它時,它不起作用(我沒有改變任何東西)
電影比例:
public int id { get; set; }
//Movie info properties
[Column("title")]
public string title { get; set; }
[Required]
[Column("year")]
public int year { get; set; }
[Column("overview")]
public string overview { get; set; }
//NotMapped properties
[NotMapped]
public string imageLink { get { return getImageLink().Result; } }
id、title、year 和 overview 存儲在 postgre 數據庫中。
getMovieLink 方法:
private async Task<string> getImageLink()
{
using (var httpClient = new HttpClient())
{
string key = Data.APIKeys.TheMovieDB_api_key;
string url = $"https://api.themoviedb.org/3/search/movie?api_key={key}&query={title}";
string imageLink = "https://www.themoviedb.org/t/p/w600_and_h900_bestv2";
var task = await httpClient.GetAsync(url).ConfigureAwait(false);
if (task.IsSuccessStatusCode)
{
var content = task.Content.ReadAsStringAsync();
var jsonString = content.Result;
var parsedObject = JObject.Parse(jsonString);
var linqList = parsedObject.SelectToken("results").ToArray();
foreach (var linq in linqList)
{
JObject obj = JObject.Parse(linq.ToString());
if (obj["title"].ToString() == title && obj["release_date"].ToString().Substring(0, 4) == year.ToString())
{
imageLink += obj["poster_path"].ToString();
return imageLink;
}
}
return "";
}
return "";
}
}
錯誤截圖:錯誤
你很不幸,因為你不幸遇到了 **AWS 持續中斷,這也可能影響最有可能在 AWS 基礎設施上運行的 TMDB( Wappalyzer 報告)。
AWS 為許多互聯網提供支持,因為 Google 對AWS 中斷的快速搜索將顯示,因此考慮到以前使用相同的代碼,我會定期檢查AWS 的狀態頁面以獲取最新更新,直到所有問題都得到解決。
即使對於最穩定的 API,PS task.IsSuccessStatusCode
也不總是正確的。
寫一個else
語句來伴隨你的if
語句,並優雅地處理錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.