关于c#:PostAsync超时/异常行为

PostAsync timeout / exception behaviour

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

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

举个例子

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

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


首先,请避免使用Result。 这是一个阻止呼叫。 您应该使用async / await关键字。 将相应的方法标记为异步,并在方法调用前添加await:

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

关于您的问题,此调用的结果为Task
任务状态可在此处TaskStatus枚举中找到。 当然,此调用可能会失败。 因此,您应该捕获可能引发的任何异常。