HttpClient有时在指定的超时之前超时

时间:2016-11-04 01:39:04

标签: c# asp.net asp.net-web-api dotnet-httpclient

我有一个ASP.NET Web API Z,它正在调用两个服务,AB

客户端呼叫Z将在500毫秒后超时。在超时之前,我已经专用了150ms来从A获得响应,在超时之前我有300ms到B。这两个HttpClient的超时都是使用Timeout属性设置的。

B的超时设置为300毫秒时,我在300毫秒内没有得到响应。我得到了TaskCancelledException

但是,当我将B的超时设置为1秒时,我得到的端到端响应为~180-240ms,小于B本身的超时。

以下是相关代码:

var client = new HttpClient()
{
    BaseAddress = baseAddress,
    Timeout = TimeSpan.Parse("00:00:00.300");
};

using (HttpResponseMessage response = await client.PostAsync(_endpoint, content))
{
    // ...
}

例外:

System.Net.WebException occurred
Message: Exception thrown: 'System.Net.WebException' in System.dll
Additional information: The request was aborted: The request was canceled.

我做错了吗?有人可以解释这种奇怪的行为吗?

0 个答案:

没有答案