.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 调用都开始正常工作并且响应迅速。
我正在创建一个 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 调用都开始正常工作并且响应迅速。