System.Net.Http.HttpRequestException将内容复制到流时出错我在.Net4.5.2框架中使用HttpClient类。我正在对第3方Web服务执行PostAsync。80%的时间帖子有效,20%的时间我们的回复被缩短。在这种情况下,我们得到以下异常:System.Net.Http.HttpRequestException:将内容复制到流时出错。—>System.IO.IOException:无法从传输连接中读取数据:远程主机强行关闭了现有连接。-->System.Net.Sockets.SocketException:远程主机在System.Net.Sockets.NetworkStream.BeginRead(Byte[]buffer,Int32offset,Int32size,AsyncCallbackcallback,objectstate)强制关闭了现有连接--异常堆栈跟踪的内部结束——在System.Net.FixedSizeReader.StartReading()在System.Net.Sockets.NetworkStream.BeginRead(Byte[]buffer,Int32offset,Int32size,AsyncCallbackcallback,objectstate)在System.Net.Security._SslStream.StartFrameHeader(Byte[]buffer,Int32offset,Int32count,AsyncProtocolRequestasyncRequest)在System.Net.Security._SslStream.StartReading(Byte[]buffer,Int32offset,Int32count,AsyncProtocolRequestasyncRequest)在System.Net.Security.PlsStream.BrocessRead(Byte[]buffer,Int32offset,Int32count,AsyncProtocolRequestasyncRequest)在System.Net.TlsStream.BeginRead(Byte[]buffer,Int32offset,Int32size,AsyncCallbackasyncCallback,ObjectasyncState))在System.Net.ConnectStream.BeginReadWithoutValidation(Byte[])System.Net.ConnectStream.BeginRead(Byte[]缓冲区,Int32偏移量,Int32大小,AsyncCallback回调,对象形状state)atbuffer,Int32offset,Int32size,AsyncCallbackcallback,objectstate)System.Net.Http.StreamToStreamCopy.StartRead().BeginRead(Byte[]buffer,Int32offset,Int32count,AsyncCallbackcallback,objectstate)后续相同请求成功这不是我们可以重置的请求,因为业务已经下单了。所以这让我们处于尴尬的境地。这是我的代码:使用(varhttpClient=newHttpClient()){HttpContenthttpContent=newStringContent(someXml);//下一行发生异常...varresponse=awaithttpClient.PostAsync("https://thirdpartyendpoint",httpContent);varresponseXml=awaitresponse.Content.ReadAsStringAsync();//converttoDto}第三方服务成功将记录保存到他们的数据库中,最后没有看到任何明显的异常。他们确实注意到,写入数据库失败的请求通常比成功的请求花费更长的时间(大约18-30秒)。感谢您的帮助我们通过2个代码更改解决了这个问题:处理httpResponseMessage并使用简单的DTO使用(varhttpResponseMessage=awaithttpClient.SendAsync(httpRequestMessage))}将HTTP版本降级到v1.0varhttpRequestMessage=newHttpRequestMessage(HttpMethod.Post,newUri(url)){Version=HttpVersion.Version10,Content=httpContent};awaitclient.SendAsync(httpRequestMessage);这个效果是添加这个HttpheaderConnection:closewhileNot上面这个是C#学习教程:System.Net.Http.HttpRequestExceptionAnerroroccurredwhencopyingthecontenttothestream分享的所有内容,如果对大家有用以及需要了解更多C#学习教程的,希望大家多多关注——连接:keep-alive本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
