基本的なクエリで動作する WCF サービスがあります。すぐに使用できるデフォルトのバインディング (デフォルト値を持つ WSHttpBinding) から始めました。
データ コントラクトはカスタム オブジェクトの配列用で、各オブジェクトのサイズは約 6k になります。これらのうち最大 5 つを (1 回のトランザクションで) 送信すると、正常に動作します。6 つ以上送信しようとすると、次のエラーが表示されます。
「リモート サーバーがエラーを返しました: (400) 不正な要求です。」
私はいくつかのバインディングを調査し、次のようにクライアントで構成を設定しようとしました:
<binding name="WSHttpBinding_IASRService" closeTimeout="00:10:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
bypassProxyOnLocal="false" transactionFlow="false"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="50000000" maxReceivedMessageSize="50000000"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="50000000" maxStringContentLength="50000000"
maxArrayLength="50000000" maxBytesPerRead="50000000"
maxNameTableCharCount="50000000" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
</binding>
同様に、サービスの web.config ファイルに構成を設定しましたが、問題は解決しません。
また、クライアントの app.config を messageEncoding="Mtom" に設定しようとしましたが、クライアントとサーバーの間でバインディングが一致していない可能性があるという別のバインディング エラーが発生したので、とりあえずそれを取り出しました。(Mtom はサーバーの web.config でも指定されていましたが。) また、私の調査では、各バインド プロパティの明確で単純な説明はまだ見つかりませんでした。
要約すると、次の質問に答えようとしています。
- より大きなリクエストを取得して不正なリクエスト エラーを生成しないようにする方法
- エラーを生成せずにクライアントを Mtom に設定する方法
- 各バインディング プロパティとその使用方法に関する適切な基本リファレンスはありますか?