.NetStandard Http SendAsync永不返回
问题描述:
我正在创建一个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 ...
答
我想了一会儿,但它碰巧是我的路由器上的一个设置。我正在使用Apple Airport Extreme,并将IPv6设置设置为“自动”。我将其更改为“仅限本地链接”,并且所有HTTP调用都开始正常工作,并且响应速度非常快。
你检查了这些 - https://stackoverflow.com/questions/19704432/await-httpclient-sendasynchttpcontent-is-non-responsive,https://stackoverflow.com/questions/12933090/async-await-with- configureawaits-continueoncapturedcontext-parameter-and-synchr –
是的,我已经找到了这两个职位,并试图解决没有运气... – CraftyCoder
你可以击中'http:// example.com'?如果不是,那么问题可能不在'HttpClient'中。可能是服务器没有响应。 –