.NetStandard Http SendAsync永远不会返回

时间:2017-08-04 03:38:13

标签: c# dotnet-httpclient .net-standard-1.4

我正在创建一个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 ...

1 个答案:

答案 0 :(得分:0)

我想了一会儿,但它碰巧是我路由器上的一个设置。我正在使用Apple Airport Extreme,IPv6设置被设置为“自动”。我将其更改为“仅限链接本地”,并且我的所有HTTP调用都开始正常工作并且响应非常快。