10

WCFストリーミングを実装するときにmaxReceivedMessageSizeプロパティが関連するのはなぜですか?バッファリングと永続性はストリームの利用者によって処理されるので、なぜWCFは、単一のサービス操作にかかる可能性のある時間の大きさや時間を気にするのでしょうか。

私はサーバーからクライアントへ、そしてその逆に大きなファイルを処理できるプロジェクトに取り組んでいます。WCFストリーミングは、理論的には無限のファイルサイズを処理できるようにする必要があるため、優れた選択肢であると考えました。クライアントとサーバーの両方で、transportMode(バインディング上)が「Streamed」に設定されており、メッセージにはStreamsが含まれるように設計されています。ただし、maxReceivedMessageSizeプロパティを増やす必要があることを示すCommunicationExceptionが発生するため、これでは十分ではありません。例外のアドバイスに従って、プロパティを魔法のように増やすと、すべてが完全に機能します。

ストリーミングが「無限」であると想定されていても、WCFによって、サービス/クライアントが処理できる量を「制限」する必要があるのではないかと心配しています。バインディングの構成よりも大きいファイルが発生した場合、同じCommunicationExceptionが発生します。WCFが大きなファイルを処理する能力を恣意的に制限している理由がわかりません。これらのファイルを送信および保存する「いつ」および「どのように」は、私が望む方法で消費するストリームがあるため、今では「私の」ビジネスです。

私は何かが足りないのですか?

4

1 に答える 1

7

ドキュメント(少なくとも私が見つけたもの)によると、メッセージのサイズを制限するように「強制」される理由は、主にDoS攻撃を回避するために、大きすぎるメッセージを送信してシステムをフラッディングすることによるセキュリティです。

防御メカニズムとして、maxReceivedMessageSizeは、受信時のメッセージの最大許容サイズに上限を設定します。デフォルトのmaxReceivedMessageSizeは64KBであり、通常、ストリーミングシナリオには低すぎます。ソース

maxReceivedMessageSizeの最大サイズは9,223,372,036,854,775,807バイトです。

お役に立てれば。

于 2012-11-05T21:26:22.820 に答える