簡體   English   中英

HttpClient.GetAsync() 掛起直到超時

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM