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: トランスポート接続からデータを読み取ることができません: 既存の接続がリモート ホストによって強制的に閉じられました。---> System.Net.Sockets.SocketException: 既存の接続が System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) でリモート ホストによって強制的に閉じられました --- 内部の終わり例外スタック トレース --- System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.Net.FixedSizeReader.

なぜこれが起こっているのかわかりませんか?

4

1 に答える 1

1

CRM サービスは、1 回のリクエストで多くのデータを取得することをまったく好みません。

セット単位でレコードを取得するには、ページング クッキーを使用することをお勧めします。問題を解決し、コードのパフォーマンスを改善する必要があります。

msdn hereに関する優れたチュートリアルを見つけることができます。

よろしく、

ケビン

于 2012-08-02T09:14:57.327 に答える