2011-09-10 6 views
1

WCFを使用して大規模なファイルストリーミングアプリケーションを実装しています。WCFアプリケーションでMaxReceivedMessageSizeとMaxBufferSizeを設定する際の問題

私はMaxReceivedMessageSizeのMaxBufferSizeのコンフィギュレーションを設定したとき、私は問題を得ました。これらのパラメータが同じ場合、システムは正常に動作します。しかし、別の値を選択すると、エラーメッセージが表示されます。

TransferMode.Buffered、MaxReceivedMessageSize、MaxBufferSizeは同じ値でなければなりません。例えば

しかし、次のように、私はhttp://msdn.microsoft.com/en-us/library/ms733742.aspxに情報を混同し、

、 サイズは4ギガバイトまでのファイルを受信し、ローカルディスクに保存する必要がありますあなたのサービスを想定。また、あなたのメモリ は、 に64 KBのデータだけをバッファリングできるように制限されているとします。次に、MaxReceivedMessageSizeを4GBに、 MaxBufferSizeを64KBに設定します。また、サービスの実装では、 を64 KBチャンクの着信ストリームからのみ読み込み、 は、前のチャンクを ディスクに書き込み、メモリから破棄する前に次のチャンクを読み取らないようにする必要があります。 MaxBufferSizeを64 KBに設定します。 また、サービスの実装では、64 KBのチャンクの入ったストリームからのみ を読み、次の チャンクを読み取ってから前のものをディスクに書き込んだ後、メモリから を破棄してください。

誰でもこの問題の理由を説明できますか?

答えて

5

TransferModeが原因です。メッセージサイズとは異なるバッファサイズを使用する場合は、ストリームに設定する必要があります。転送が完了するまで

  • バッファ転送がメモリバッファにメッセージ全体を保持する:

    トランスポートは、各方向にメッセージを転送する2つのモードをサポートします。

  • ストリーム配信は、メッセージヘッダーをバッファし、メッセージ本文をストリームとして公開します。ストリームからは、一度に小さい部分を読み込むことができます。

関連する問題