【发布时间】:2018-07-18 03:40:11
【问题描述】:
我正在使用这些命令调用 API:
byte[] messageBytes = System.Text.Encoding.UTF8.GetBytes(message);
var content = new ByteArrayContent(messageBytes);
content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
HttpResponseMessage response = client.PostAsync(ApiUrl, content).Result;
但是,代码在 PostAsync 行停止执行。我在下一行设置了一个断点,但从未到达。它不会立即抛出错误,但几分钟后它会抛出如下错误:
System.Net.Sockets.SocketException:连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应。
我认为这意味着 API 已关闭。我该怎么做才能让PostAsync 立即吐出错误,即使 API 已关闭,以便我可以处理错误并通知用户?
谢谢。
【问题讨论】:
-
某事
DoItAsync要求函数声明为async Task<...> Something并且调用看起来像response = await DoItAsync(...) -
您可以减少请求的超时时间,但是如果您将其设置得太低,即使 API 可用,也可能导致请求失败
-
嗨@Windhoek,如果我在下面的回答对您有帮助,请务必投票并将其标记为正确答案。这可以帮助我,也可以帮助其他来到这里的人找到相同的答案。谢谢!
-
@pcdev 谢谢我前段时间投了赞成票,但也只是将其标记为答案。预检查方法对我有用。
标签: c# asp.net asp.net-web-api asp.net-web-api2