1

protobuf-netを使用してwcfnet.msmqを介して大きなメッセージを送信し、次のエラーが発生するという問題が発生しています。

フォーマッタは、メッセージの逆シリアル化を試みているときに例外をスローしました:操作'DeliverData'の要求メッセージの本文の逆シリアル化中にエラーが発生しました。終了要素'proto'from namespace'http ://mynamespace 'が必要です

メッセージサイズが16k未満の場合、機能します

protobuf-netを削除すると、機能します

basichttpに切り替えると、機能します

しかし、protobuf-netを使用してnet.msmqを介してメッセージサイズが16kを超えると、エラーが発生します。maxBufferPoolSizeとmaxReceivedMessageSizeを十分に大きく設定しましたが、役に立ちません。

他の誰かがこれを見たことがありますか?他の誰かが大きなメッセージにprotobuf-net+net.msmqを使用して、それを機能させましたか?

4

1 に答える 1

1

遅延についてお詫びします-休日など。いいえ、私はそれに関する特定の問題を見ていません。「Endelement」を呼び出すという事実は、それがその時点でxmlレイヤーにあることを示唆しています(これはprotobuf-netが実際に関与する前です)。これを確実に再現できる方法はありますか?


調査の結果、ここでの問題はWCFのリーダークォータにあるようです。例外はMSMQに飲み込まれたように見えるため、すぐにはわかりませんでした。これは、System.Runtime.Serializationを参照し、バインディングを適切に増やすことで、構成またはコード(バインディングを手動でセットアップしている場合)で修正でき.ReaderQuotas.MaxArrayLengthます。最大許容値は2147483647です。

于 2010-09-06T05:12:16.027 に答える