約50個の要素の配列をWCFサービスメソッドに送信しようとしていますが、常に(404) Bad Request
エラーが発生します。
空の配列を送信すると機能するため、メッセージサイズなどに関係していると思います。
私はいくつかの調査を行い、WCFのweb.configにいくつかのものを追加しましたが、それでもこれを機能させることができません。
送信できるメッセージのサイズを大きくする方法について、誰か追加情報を教えてください。
[更新]解決策:
約50個の要素の配列をWCFサービスメソッドに送信しようとしていますが、常に(404) Bad Request
エラーが発生します。
空の配列を送信すると機能するため、メッセージサイズなどに関係していると思います。
私はいくつかの調査を行い、WCFのweb.configにいくつかのものを追加しましたが、それでもこれを機能させることができません。
送信できるメッセージのサイズを大きくする方法について、誰か追加情報を教えてください。
[更新]解決策:
愚かな、愚かな私:(
問題は、次のようにweb.configでバインディング構成を作成していたことです。
<bindings>
<wsHttpBinding>
<binding name="netTcpBindingConfig" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" transactionFlow="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxReceivedMessageSize="6000000">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="6000000" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
</binding>
</wsHttpBinding>
</bindings>
しかし、そのとき私はエンドポイントに構成を適用していませんでした!したがって、これをエンドポイントタグに追加する必要がありました。
bindingConfiguration="netTcpBindingConfig"
今ではそれは魅力のように機能します。
明らかなものですが、MaxReceivedMessageSizeを65536に設定して、それでも失敗するかどうかを確認してみましたか?
サービスホストは、大量のデータセットを受信するように構成する必要があります。そうでない場合は、サービスレベルでドロップされます。
バインディングを作成するときは、メッセージサイズを設定します。
return new NetTcpBinding(SecurityMode.None, true)
{
MaxReceivedMessageSize = 99999999,
ReaderQuotas = { MaxArrayLength = 99999999 }
};