相关疑难解决方法(0)

System.Net.Http.HttpRequestException将内容复制到流时出错

我在.Net 4.5.2框架中使用HttpClient类.我正在对第三方Web服务进行PostAsync.这篇文章80%的时间都在工作,20%的时间我们的回复被缩短了.在这种情况下,我们得到以下异常:

System.Net.Http.HttpRequestException:将内容复制到流时出错.---> System.IO.IOException:无法从传输连接读取数据:远程主机强制关闭现有连接.---> System.Net.Sockets.SocketException:远程主机在System.Net.Sockets.NetworkStream.BeginRead(Byte []缓冲区,Int32偏移量,Int32大小,AsyncCallback回调,对象状态)强制关闭现有连接---内部异常堆栈跟踪的结束---在System.Net.FixedSizeReader.StartReading()的System.Net.Sockets.NetworkStream.BeginRead(Byte []缓冲区,Int32偏移量,Int32大小,AsyncCallback回调,对象状态)在System.Net.Security._SslStream.StartFrameHeader(字节[]缓冲液,的Int32偏移的Int32计数,AsyncProtocolRequest asyncRequest)在System.Net.Security._SslStream.StartReading(字节[]缓冲液,的Int32偏移的Int32计数,

随后的相同请求成功.这不是我们可以重新设置的请求,因为已经放置了业务.所以它让我们处于一种尴尬的境地.

这是我的代码:

using (var httpClient = new HttpClient())
{
    httpClient.DefaultRequestHeaders.Authorization = authorizationHeader;
    HttpContent httpContent = new StringContent(someXml);

    //Exception occurs on next line...
    var response = await httpClient.PostAsync("https://thirdpartyendpoint", httpContent);
    var responseXml = await response.Content.ReadAsStringAsync();  
    //convert to Dto              
}
Run Code Online (Sandbox Code Playgroud)

第三方服务成功地将记录保存到他们的数据库中,并且在他们的结尾没有看到任何明显的例外.他们确实注意到,写入数据库的失败请求通常需要比成功请求更长的时间(大约18-30秒).

谢谢您的帮助

.net c# asp.net asp.net-web-api

16
推荐指数
2
解决办法
2万
查看次数

标签 统计

.net ×1

asp.net ×1

asp.net-web-api ×1

c# ×1