WCF - メッセージ サイズ クォータを増やす方法 質問する

WCF - メッセージ サイズ クォータを増やす方法 質問する

データベースからクライアントに 1000 件のレコードを返す WCF サービスがあります。ASP.NET WCF クライアントがあります (WCF を使用するために、asp.net Web アプリケーション プロジェクトにサービス参照を追加しました)。

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

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

何か助けはありますか? メッセージ サイズのクォータを増やすにはどうすればいいですか?

ベストアンサー1

メッセージ サイズのクォータを増やすには、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 では、最近のほとんどのサーバーを圧倒するには非常に多くのクライアントが必要になります。

おすすめ記事