PostAsync超时/异常行为

时间:2018-04-25 08:32:05

标签: c# asp.net

关于HttpClient的PostAsync方法的文档有点......偏低。

我想知道它的行为: 是否在超时或网站调用引发异常时会带来任何异常?如果不是这些情况会发生什么?

例如

using (HttpClient Client = new HttpClient())
{
     var result = Client.PostAsync(url, content).Result;
}

该网站有时会抛出异常,或者在流量超时的情况下抛出异常。我不确定结果如何。我是否会获得异常,“无限循环”(因此不会发生超时),或者如果抛出异常或发生超时,结果是否为空?

1 个答案:

答案 0 :(得分:2)

首先请注意,请避免使用Result。这是一个阻止电话。您应该使用async / await关键字。将相应的方法标记为async,并在方法调用前加上await:

var result = await Client.PostAsync(url, content);

关于您的问题,此次调用的结果为Task<HttpResponseMessage>。 可在此处TaskStatus Enumeration找到任务的状态。当然这个电话会失败。所以你应该捕获任何可能引发的异常。