[Dynamics 365] System.ServiceModel.CommunicationException: The maximum message size quota for incoming messages (XXX) has been exceeded.
2018/08/24 Kyo1.Inoue
Dynamics 365 プラグインで、
「System.ServiceModel.CommunicationException: The maximum message size quota for incoming messages (XXX) has been exceeded.」
という、謎のエラーが発生し、あるプロジェクトで困っていると相談を受けました。
「受信メッセージ(XXX)の最大メッセージサイズクォータが超過しています。」
というもので、調べてみてもweb.configのMaxReceivedMessageSizeプロパティの値を変えなさいという英語ページばっかり。
いやいや、Dynamics 365 Onlineだし、web.config変えられないし・・・
あっさり解決したのでメモ書きを残しておきます。
プラグインで、LinQによるデータ取得をおこなっていました。
開発環境では、取得対象データがあまり無く、問題も起きなかったのですが、
テスト環境で移行データが入った後に、プラグインで当エラーが発生しました。
[Errorプラグイン LinQの内容 ※ちょっと変えてます]
[code] var q = (from ac in Account.AsEnumerable() where AccountId == accountId select new { accNm = ac.Name, }).ToList(); [/code]
[OKプラグイン LinQの内容 ※ちょっと変えてます]
[code] var q = (from ac in Account where AccountId == accountId select new { accNm = ac.Name, }).ToList(); [/code]
どうやら、
.AsEnumerable()
が悪さをしていたようで、拡張メソッドを使う際の変換演算子のようですが、
これがCASTする際にデータ量が多くてメッセージサイズオーバーのtime out Exceptionを出していたようです。
何故これを使用していたのかわかりませんが、特に理由は見当たらず、削除して無事解決。
まともにエラーメッセージを調べていっても路頭に迷っちゃう。というのがよくわかります。
どなたかの役に立てば光栄です。