【发布时间】:2018-01-11 20:46:51
【问题描述】:
我正在创建一个 NuGet 包以从在线 API 检索图像。我正在使用 .NetStandard 1.4 并使用 System.Net.Http 4.3.2 版。每次我调用 Login 方法来获取访问 api 的令牌时,http 调用永远不会返回,只会挂起,直到由于超时而发生任务取消异常。我已经尝试了多种我在网上找到的解决方案,例如确保在异步调用之前没有 .Result 或 .Wait() 并且我的测试中没有。我也尝试过使用不正确的 url,但调用仍然挂起并且没有返回说 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 值和网站路径是正确的,我已经检查过了。我还使用了相同的链接以及我需要在 Postman 中发送的所有信息,以验证我使用的信息是否正确。
我已尝试使用 MSTest、控制台项目和 WPF 项目进行测试,使用按钮和单击事件来触发此方法。每个方法都挂起并且永远不会通过
using (HttpResponseMessage ...
【问题讨论】:
-
是的,我已经找到了这两个帖子,并尝试了没有运气的解决方案......
-
你能打
http://example.com吗?如果不是,问题可能与HttpClient无关。可能是服务器没有响应。 -
我运行你的测试试图点击http://example.com,但它仍然挂在同一个地方。没有变化..
-
如何调用方法?你怎么知道“工作”永远不会被执行?您能否设置一个新的控制台应用程序来重现此行为?
标签: c# dotnet-httpclient .net-standard-1.4