2017-08-04 67 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调用都开始正常工作,并且响应速度非常快。