WCFサービスが応答メッセージにバイト配列を返した場合、データが既定の長さ16384バイトを超える可能性があります。これが発生すると、例外がXML データを読みながら を超えた最大配列長クォータ(16384)WCF readerクォータ設定 - 欠点?
ようなものであろう。この制限はXML リーダーの作成時に使用される XmlDictionaryReaderQuotas オブジェクトのMaxArrayLengthプロパティを変更することによって を増やすことができます。
私は、ウェブ上で見てきたすべてのアドバイスはちょうど彼らの最大<readerQuotas>
要素の設定を大きくすることであるので、サーバ上の
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
のようなもの、およびクライアント上で同様。
特に、バイト配列のサイズが時折非常に大きくなる可能性がある場合は、このアプローチの欠点を知りたいと思います。上記の設定を行うだけで、WCFはリクエストごとに大きな配列を宣言しますか?返されるデータの最大サイズを制限する必要がありますか、または合理的なサイズのバッファを指定するだけで、すべてのデータが読み込まれるまでWCFが継続しますか?
ありがとうございます!
オクラホマので、サーバ設定の設定だけで、クライアントの設定のリクエストメッセージ、および設定は、応答メッセージに影響を与える影響しますか?小さなリクエストメッセージを受け取るが大きなレスポンスを返すサービスがある場合は、サーバーの設定を変更する必要がありますか、それともクライアントに任せますか?クライアントがサービス参照を作成したときに自動的に大きな応答が設定されるように、サーバー設定を変更する方法はありますか?ありがとう! –
「大きなレスポンス」はどのように構造化されていますか?それは基本的にあなたが返すファイルですか?もしそうなら、私はストリームベースの応答のためにストリーミングをチェックアウトします。私が理解している限り、サーバーの設定は着信要求と発信応答の両方に影響します。したがって、メッセージサイズが小さすぎると大きな応答は不可能です(基本的にはバッファのサイズを設定しています要求と応答に使用されるサーバー上)。 –