首页 文章

Dynamics CRM导致CommunicationException

提问于
浏览
2

我正在使用MS Dynamics CRM API从中获取数据(超过5000条记录) .

我正在使用基于XML的查询来获取数据

EntityCollection resultSet = _orgServiceProxy.RetrieveMultiple(new FetchExpression(query));

有时候它工作,大多数时候它会抛出异常,从日志中,我得到这个长期的异常 .

接收到https://orgno.api.crm.dynamics.com/XRMServices/2011/Organization.svc的HTTP响应时发生错误 . 这可能是由于服务 endpoints 绑定不使用HTTP协议 . 这也可能是由于服务器中止HTTP请求上下文(可能是由于服务关闭) . 请参阅服务器日志以获取更多详---> System.ServiceModel.CommunicationException:接收到https://orgno.api.crm.dynamics.com/XRMServices/2011/Organization.svc的HTTP响应时发生错误 . 这可能是由于服务 endpoints 绑定不使用HTTP协议 . 这也可能是由于服务器中止HTTP请求上下文(可能是由于服务关闭) . 请参阅服务器日志以获取更多详---> System.Net.WebException:底层连接已关闭:接收上发生意外错误 . ---> System.IO.IOException:无法从传输连接读取数据:远程主机强制关闭现有连接 . ---> System.Net.Sockets.SocketException:System.Net.Sockets.NetworkStream.Read(Byte []缓冲区,Int32偏移量,Int32大小)远程主机强制关闭现有连接---内部结束异步堆栈跟踪--- System.Net.Sockets.NetworkStream.Read(Byte []缓冲区,Int32偏移量,Int32大小)在系统的System.Net.FixedSizeReader.ReadPacket(Byte []缓冲区,Int32偏移量,Int32计数)处系统中的System.Net.Security._SslStream.StartReading(Byte []缓冲区,Int32偏移量,Int32计数,AsyncProtocolRequest asyncRequest)的.Net.Security._SslStream.StartFrameHeader(Byte []缓冲区,Int32偏移量,Int32计数,AsyncProtocolRequest asyncRequest) System.Net.PooledStream上的System.Net.TlsStream.Read(Byte []缓冲区,Int32偏移量,Int32大小)处的.Net.Security._SslStream.ProcessRead(Byte []缓冲区,Int32偏移量,Int32计数,AsyncProtocolRequest asyncRequest) . 在System.Net.Connection.SyncRead上读取(Byte []缓冲区,Int32偏移量,Int32大小)(HttpWebRequest请求,布尔userRetrievedStream,Bo olean probeRead)---内部异常堆栈跟踪的结束---在System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan超时)的System.Net.HttpWebRequest.GetResponse()处 - 内部异常结束堆栈跟踪

我不知道为什么会这样?

1 回答

  • 1

    CRM服务根本不喜欢在一个请求中检索大量数据 .

    我建议您使用分页cookie来按集检索记录 . 它应该可以解决您的问题并提高代码的性能 .

    你可以在msdn here上找到一个很好的教程 .

    问候,

    凯文

相关问题