0

MaxRecievedMessageSizeサーバーからの応答がクライアント側バインディング オブジェクトで定義されたプロパティを超える WCF サーバーに対してテストを行った結果、 CommunicationException. Fiddlerを使用してリクエストとレスポンスを調べました。を超えるにもかかわらずMaxRecievedMessageSize、応答全体がクライアントに送信されます。

私はこの振る舞いの要点を見逃していると思います。ご覧のとおり、データは既に受信されているため、帯域幅は節約されません。クライアント アプリケーションはデータを処理できた可能性がありますが、アプリケーションに渡される前にクライアント バインディングが破棄されました。

帯域幅を節約することがクライアント側の MaxReceivedMessageSize の目的ではない場合、それは何のためですか?

4

1 に答える 1

1

答えは簡単です。セキュリティです。

クライアントがサーバーに「ところで、X バイトよりも大きな応答を送信しないでください」と言うことができれば、帯域幅にとっては確かに良いでしょうが、それは彼らが実装していないものです :-)

たとえそうであったとしても、サーバーにバグがあったり、意図的に不正な動作をしている場合はどうなるでしょうか? サーバーが 2 TB の文字列を返した場合はどうなるでしょうか? クライアントは、リクエストを受信するために 2TB のバッファを割り当てようとし、おそらく OutOfMemoryException を取得します。それはあなたのクライアントをダウンさせるでしょう。

于 2014-01-30T10:22:23.157 に答える