1. ホーム
  2. .net

[解決済み] WCF - メッセージサイズのクォータを増加させる方法

2022-03-20 11:01:26

質問

データベースから1000レコードをクライアントに返すWCFサービスを持っています。私はASP.NET WCFクライアントを持っています(私はWCFを消費するためにASP.NET Webアプリケーションプロジェクトでサービスリファレンスを追加しました)。

クライアントアプリケーションを実行すると、次のようなメッセージが表示されます。

受信メッセージの最大サイズ枠(65536)を超えました。 を超えました。クォータを増やすには のMaxReceivedMessageSizeプロパティが必要です。 適切なバインディング要素

何かお手伝いできることはありますか?メッセージサイズのクォータを増やすには?

解決方法を教えてください。

メッセージサイズのクォータを増やすには、次のようなものが必要です。 App.config または Web.config ファイルを作成します。

<bindings>
    <basicHttpBinding>
        <binding name="basicHttp" allowCookies="true"
                 maxReceivedMessageSize="20000000" 
                 maxBufferSize="20000000"
                 maxBufferPoolSize="20000000">
            <readerQuotas maxDepth="32" 
                 maxArrayLength="200000000"
                 maxStringContentLength="200000000"/>
        </binding>
    </basicHttpBinding>
</bindings>

そして、エンドポイント設定にバインディング名を使用します(例)。

...
bindingConfiguration="basicHttp"
...

この値を正当化する理由は簡単で、ほとんどのメッセージに対応できるよう十分に大きな値になっているからです。この数値は、あなたのニーズに合わせて調整することができます。低いデフォルト値は、基本的にDOSタイプの攻撃を防ぐために存在します。20000000にすると、分散型DOS攻撃が有効になります。デフォルトの64kのサイズでは、最近のほとんどのサーバーを圧倒するために非常に多くのクライアントが必要になります。