.NetStandard Http SendAsync 从不 Returns

.NetStandard Http SendAsync Never Returns

我正在创建一个 NuGet 包来从在线 API 检索图像。我正在使用 .NetStandard 1.4 并使用 System.Net.Http 版本 4.3.2。每次我调用 Login 方法来获取访问 api 的令牌时,http 调用永远不会 returns 并且只是挂起,直到由于超时而发生任务取消异常。我已经尝试了多种我在网上找到的解决方案,例如确保在异步调用之前没有 .Result 或 .Wait() 并且在我的测试中有 none 。我也尝试过使用不正确的 url 并且呼叫仍然挂起并且没有 return 说 url 不存在。

我在下面发布了主要的 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 值和路径正确,我已经检查过了。我还使用了相同的 link 以及我需要在 Postman 中发送的所有信息,以验证我使用的是正确的信息。

我已尝试使用 MSTest、控制台项目和 WPF 项目进行测试,使用按钮和单击事件来触发此方法。每个方法都挂起并且永远不会通过

using (HttpResponseMessage ...

我很久以前就想出来了,但这恰好是我路由器上的一个设置。我使用的是 Apple Airport Extreme,IPv6 设置为 "Automatically"。我将其更改为 "Link-local only",我的所有 HTTP 调用都开始正常工作并且响应迅速。