我正在创建一个NuGet包来从在线API中检索图像。我正在使用.NetStandard 1.4并使用System.Net.Http版本4.3.2。每次我调用Login方法获取令牌来访问api时,http调用永远不会返回,只是挂起,直到由于超时而发生任务取消异常。我尝试了多种在线发现的解决方案,例如确保在异步调用之前没有.Result或.Wait(),并且在我的测试中没有。我也尝试使用不正确的网址,但通话仍然挂起,并且没有回复说网址不存在。
我在下面发布了主要的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 :(得分:0)
我想了一会儿,但它碰巧是我路由器上的一个设置。我正在使用Apple Airport Extreme,IPv6设置被设置为“自动”。我将其更改为“仅限链接本地”,并且我的所有HTTP调用都开始正常工作并且响应非常快。