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 响应时出错。这可能是由于服务端点绑定未使用 HTTP 协议。这也可能是由于服务器中止了 HTTP 请求上下文(可能是由于服务关闭)。有关更多详细信息,请参阅服务器日志。---> System.ServiceModel.CommunicationException: 接收到https://orgno.api.crm.dynamics.com/XRMServices/2011/Organization.svc的 HTTP 响应时出错. 这可能是由于服务端点绑定未使用 HTTP 协议。这也可能是由于服务器中止了 HTTP 请求上下文(可能是由于服务关闭)。有关更多详细信息,请参阅服务器日志。---> System.Net.WebException:底层连接已关闭:接收时发生意外错误。---> System.IO.IOException: Unable to read data from the transport connection: 一个现有的连接被远程主机强行关闭。---> System.Net.Sockets.SocketException: 远程主机在 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) 处强制关闭现有连接 --- End of inner异常堆栈跟踪---在 System.Net.FixedSizeReader 的 System.Net.Sockets.NetworkStream.Read(Byte[] 缓冲区,Int32 偏移量,Int32 大小)。

我不知道为什么会这样?

4

1 回答 1

1

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

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

你可以在这里找到一个关于 msdn 的不错的教程。

问候,

凯文

于 2012-08-02T09:14:57.327 回答