2017-08-04 101 views
0

我正在創建一個NuGet包來從聯機API檢索圖像。我使用.NetStandard 1.4並使用System.Net.Http版本4.3.2。每次我調用Login方法獲取令牌以訪問api時,http調用都不會返回,只是掛起,直到由於超時而發生任務取消異常。我嘗試了多種在線方式,例如確保在異步調用之前沒有.Result或.Wait(),並且在我的測試中沒有任何解決方案。我也嘗試使用不正確的網址,並且調用仍然掛起,並且不會返回說URL不存在。.NetStandard Http SendAsync永不返回

我在下面發佈了主要的http調用。任何幫助,爲什麼這是懸掛將非常感激。

HttpRequestMessage requestMessage = new HttpRequestMessage(); 
requestMessage.RequestUri = new Uri($"{BaseUrl}/login"); 
requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(HttpContentType.JSON)); 
requestMessage.Method = HttpMethod.Post; 
requestMessage.Content = new StringContent(JsonConvert.SerializeObject(values), Encoding.UTF8, HttpContentType.JSON); 

using (HttpClient httpClient = new HttpClient()) 
{ 
    using (HttpResponseMessage response = await httpClient.SendAsync(requestMessage)) 
    { 
     if (response.IsSuccessStatusCode == true) 
     { 
      // Do work 
     } 
    } 
} 

BaseUrl值和網站的路徑是正確的,我已經檢查過。此外,我還使用了郵遞員發送的相同鏈接和所有信息,以驗證我使用的是正確的信息。

我試圖使用MSTest,一個控制檯項目和一個WPF項目使用按鈕並點擊事件來測試這個方法。每個方法都會掛起,永遠不會通過

using (HttpResponseMessage ... 
+0

你檢查了這些 - https://stackoverflow.com/questions/19704432/await-httpclient-sendasynchttpcontent-is-non-responsive,https://stackoverflow.com/questions/12933090/async-await-with- configureawaits-continueoncapturedcontext-parameter-and-synchr –

+0

是的,我已經找到了這兩個職位,並試圖解決沒有運氣... – CraftyCoder

+0

你可以擊中'http:// example.com'?如果不是,那麼問題可能不在'HttpClient'中。可能是服務器沒有響應。 –

回答

0

我想了一會兒,但它碰巧是我的路由器上的一個設置。我正在使用Apple Airport Extreme,並將IPv6設置設置爲「自動」。我將其更改爲「僅限本地鏈接」,並且所有HTTP調用都開始正常工作,並且響應速度非常快。