我有以下代码,有时我发送到的处理程序在收到响应之前会超时(我不想延长默认的超时值)。发生这种情况时,会在有一个InnerExceptions的地方抛出一个AggregateException:
{“任务已取消。”} System.Exception {System.Threading.Tasks.TaskCanceledException}
var _httpClient = new HttpClient();
var _content = new StringContent("thecontent");
var responseMessagePost = _httpClient2.PostAsync("http://localhost:50643/handler1.ashx", _content).Result;这是正确的行为吗?
我期望变量responseMessagePost的状态代码为RequestTimeout = 408。例如,当我执行以下操作时,不会抛出异常,并且会得到一个状态代码NotFound = 404。为什么行为会有所不同?
var httpClient = new HttpClient();
var _content = new StringContent("thecontent");
var _responseMessagePost = httpClient.PostAsync("http://localhost:50643/handlerdoesnotexist.ashx", _content).Result;发布于 2012-08-15 08:05:40
您得到的超时异常是由于HTTP客户端放弃了等待服务器产生响应。408是当服务器放弃等待客户端完成其请求时来自服务器的响应。
据我所知,你正在寻找的东西没有状态代码。如果服务器能够返回一个状态码,那么客户端就不需要超时了!
发布于 2014-11-14 22:00:12
我得到了同样的错误,并追踪到我的HttpClient超时。默认超时时间为100秒。我在HttpClient的创建过程中添加了以下内容。
HttpClient httpClient = new HttpClient();
httpClient.Timeout = TimeSpan.FromMinutes(10);
https://stackoverflow.com/questions/11960784
复制相似问题