データベースからクライアントに 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 では、最近のほとんどのサーバーを圧倒するには非常に多くのクライアントが必要になります。