2

我正在使用MS Dynamics CRM api從中獲取數據(超過5000條記錄)。Dynamics CRM原因CommunicationException

我使用基於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:無法從傳輸連接讀取數據:現有連接被遠程主機強制關閉。 ---> System.Net.Sockets.SocketException:現有連接被遠程主機在System.Net.Sockets.NetworkStream.Read(Byte []緩衝區,Int32偏移量,Int32大小)強制關閉---內部結束系統.Net.Sockets.NetworkStream.Read(Byte []緩衝區,Int32偏移量,Int32大小)上System.Net.FixedSizeReader.ReadPacket(字節[]緩衝區,Int32偏移量,Int32計數) .Net.Security._SslStream.StartFrameHeader(Byte []緩衝區,Int32偏移量,Int32計數,AsyncProtocolRequest asyncRequest) .Net.Security._SslStream.ProcessRead(Byte []緩衝區,Int32偏移量,Int32計數,AsyncProtocolRequest asyncRequest)在System.Net.TlsStream.Read(Byte []緩衝區,Int32偏移量,Int32大小)在System.Net.PooledStream。在System.Net.Connection.SyncRead(HttpWebRequest請求,布爾userRetrievedStream,Bo olean probeRead)---內部異常堆棧跟蹤結束---在System.Net.HttpWebRequest.GetResponse()處System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan超時)---內部異常結束堆棧跟蹤

我不知道爲什麼會發生這種情況?

回答

1

CRM服務根本不喜歡在一個請求中檢索太多數據。

我建議你使用分頁cookie來檢索你的記錄。它應該可以解決您的問題並提高代碼的性能。

你可以在msdn here上找到一個很好的教程。

問候,

凱文