HttpClient的PostAsync方法在2-3次超时请求后抛出Aggregate异常
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HttpClient的PostAsync方法在2-3次超时请求后抛出Aggregate异常相关的知识,希望对你有一定的参考价值。
我正在使用HttpClient进行webrequest,它涉及“Timeout”功能,除了超时功能外,一切正常
当请求被命中2-3次时会抛出“聚合异常”(例如点击登录按钮并且请求超时)。
我试过“捕捉”异常,但它不起作用。
使用的代码:
try
{
HttpClient httpClient = new HttpClient();
//explicit timeout for testing
TimeSpan requestTimeout = new TimeSpan(1000);
httpClient.Timeout = requestTimeout;
HttpContent httpContent = new StringContent(postJSON);
httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
HttpResponseMessage response = null;
response = await httpClient.PostAsync(url, httpContent);
if (response != null)
{
response.EnsureSuccessStatusCode();
netResults = await response.Content.ReadAsStringAsync();
Logger.Log("NetworkRequest:ResponseStream:Json result:" + netResults);
}
if (this.convertedType != null)
{
MemoryStream assetReader = GetMemoryStreamFromString(netResults);
assetReader.Position = 0;
object value = fromJSON(assetReader, this.convertedType);
networkReqSuccessWithObjectCallback(this, value);
}
else
{
//Return netResult as string.
networkReqSuccessWithStringCallback(this, netResults);
}
}
catch (TaskCanceledException)
{
ErrorException ee = null;
ee = new ErrorException("RequestTimeOut");
NotifyNetworkDelegates(ee);
}
catch (WebException we)
{
// failure
ErrorException ee = null;
ee = ErrorException.fromJSON(we.Message);
NotifyNetworkDelegates(ee);
}
catch (Exception e)
{
Do something.
}
关于这里出了什么问题的任何想法。(使用C#+ XAML + Win8)
答案
HttpClient在引擎盖下使用HttpWebRequest。您可能正在达到HttpWebRequest的ServicePoint的两个并发连接限制。
另一答案
一旦我在package.appxmanifest> Capabilities中做了一些更改,我就遇到了同样的问题
- >启用Internet(客户端和服务器)选项
这个应用程序工作正常后。
以上是关于HttpClient的PostAsync方法在2-3次超时请求后抛出Aggregate异常的主要内容,如果未能解决你的问题,请参考以下文章
为啥 HttpClient.PostAsync 似乎将请求作为 GET 而不是 POST 发送?
HttpClient 中的 PostAsync 不会将数据发送到我的 webapi