2

補足: 質問が数か月前に投稿されたとしても、私はまだ適切な回答を探しているので、フィードバックを歓迎します。

WCF Web サービスの開発中に、次のエラーが発生しました。

The maximum array length quota (16384) has been exceeded while reading XML data.

他の多くの人と同様に、バインディング構成を変更することで解決しました。

インターネットで回答を探すと、ほとんどの場合、解決策はバインド構成を変更し、maxArrayLength最大値に設定してStreamed転送することでした。この質問WCF sent huge dataのように、状況によっては、小さなチャンクでデータを送信するよりもバインディング構成を変更することをお勧めします。

しかし、最大値とストリーミング転送は常に機能しますか? データの最大サイズがわからないシステムでも?

2つのオプションから選択する方法は?

それはあなたが転送するものに依存しますか?メディアをダウンロードするか、大きなログ情報を返すか?

これまで私に与えられた答えは、ストリーミングの技術的な側面を中心に展開していますが、私が探している答えは、2 つのオプションのどちらかを選択することについて、露出した状況でのガイドラインにもっと焦点を当てる必要があります

4

1 に答える 1

1

すべてのバインディングがストリーミングをサポートしているわけではありません。これを行うのは、basicHttpBinding、NetTcpBinding、NetNamedPipeBinding、および WebHttpBinding だけです。また、ストリーミングを使用している場合、信頼できるセッションを行うことはできません.

では、なぜ大きなメッセージのストリーミングが重要なのでしょうか? ストリーミングを使用しない場合、メッセージ全体がメモリ バッファーに読み込まれ、使用可能なリソースが失われる可能性があります。

詳細については、MSDN でこれを参照してください: MSDN Large Message Transfers

于 2012-08-31T02:22:49.487 に答える