C# HttpClient:计数不能小于零。参数名称:count

C# HttpClient:计数不能小于零。参数名称:count,c#,C#,我使用HttpClient对远程服务器执行REST调用: using (var response = httpClient.PostAsync(Url, content).Result) { // code } 它工作正常,但有时会返回奇怪的错误: 2014-07-28 12:04:40098(268795336)[114]错误- System.AggregateException:发生一个或多个错误。--> System.Net.Http.HttpRequestException:发送时出错

我使用HttpClient对远程服务器执行REST调用:

using (var response = httpClient.PostAsync(Url, content).Result)
{
// code
}
它工作正常,但有时会返回奇怪的错误:

2014-07-28 12:04:40098(268795336)[114]错误- System.AggregateException:发生一个或多个错误。--> System.Net.Http.HttpRequestException:发送时出错 请求。-->System.Net.WebException:基础连接 已关闭:发送时发生意外错误。--> System.ArgumentOutOfRangeException:计数不能小于零。 参数名称:count 在System.Net.TlsStream.EndWrite(IAsyncResult asyncResult)中 位于System.Net.ConnectStream.WriteHeadersCallback(IAsyncResult ar)


问题的原因可能是什么?

我想偶尔出现的问题可能是由死锁引起的。当我们使用异步方法时,出于上述原因,最好使用
wait
而不是
Task.Result
。请看一下这篇文章,其中讨论了异步编程的最佳实践。

什么是内容和Url?您是否一次处理多个请求(即多线程使用)?这不是HttpClient内部第一次出现争用情况……看起来这个错误发生在服务器端,而不是客户端。你能发布服务器端代码吗?@Liath:Url不重要。我不能一周复制,有时需要两天。重新启动应用程序可以暂时解决此问题。我不能发布服务器端代码,我调用外部服务。我不认为问题出在服务器端,我可以从本地实例发出请求而不会出现问题。to@Cameron:我在服务器应用程序中使用HttpClient,是的,它可以一次执行多个请求,但这不会导致死锁,而不是(模糊的)异常?可能由于死锁而引发异常,但当您使用Task.Wait或Task.Result同步阻止任务时,这些异常将包装在System.AggregateException中。我立即收到错误。看起来不像是死锁。