ASP.MVCアプリに、約15kレコードのコレクションを保存する必要があるユースケースがあります(これはCSVファイルのアップロードからのものです)。アップロードされたデータをビジネスルールで検証するために、CSLAビジネスオブジェクトに通しています。
WCFDataPortalを利用しています。saveが呼び出されると、約30秒から45秒後にこのエラーが発生します。
System.ServiceModel.EndpointNotFoundException:[my dataportal hostaddress]/WcfPortal.svcでメッセージを受け入れることができるエンドポイントがリッスンしていませんでした。
コレクションを小さなチャンクに分割し、それらのチャンクのそれぞれでsaveを呼び出すと、ユースケースは問題なく完了すると判断しました。
次のように最大値を使用するようにサービスを構成しました(Rockyの本で推奨されています)(そして他のガイダンスに基づいてsendTimeoutを増やしました):
<binding name="wsHttpBinding_IWcfPortal" maxReceivedMessageSize="2147483647" sendTimeout="05:00:00">
<readerQuotas maxBytesPerRead="2147483647" maxArrayLength="2147483647" maxStringContentLength="2147483647" maxNameTableCharCount="2147483647" maxDepth="2147483647"/>
</binding>
これで、データが2147486347のサイズ制限を超えていないことがわかりました。さらに、もしそうなら、これを示すより意味のあるエラーメッセージを受け取ることを期待します(サイズ制限がデフォルトにあったときのように)。
WCFロギング/トレースをオンにしましたが、何も表示されません。このエラーは、WCFスタックが登場する前に発生する通信レベルのエラーのようです。
この大きなコレクションを保存しようとすると、なぜこのエラーが発生するのか教えてください。