このアプリは、basicHttpBinding を介して WCF 経由で多数の Web サービスを使用します。多くの場合、XML メッセージは非常に大きくなります (>2MB)。
実行時に、すでに Int32.MaxValue に設定されている ReaderQuotas に関連していると思われる逆シリアル化エラーを断続的に受け取ります。
スタックの先頭は次のとおりです (申し訳ありませんが、提供された画像から手動で入力する必要がありました)。
System.ServiceModel.Dispatcher.NetDispatcherFaultException: The formatter threw an
exception while trying to deserializat the message: There was an error while trying to
deserialize parameter [the namespace].
The InnerException message was 'There was an error deserializing the object of type
[a type]. The maximum array length quota (5) or the maximum items in object graph
quota has been exceeded while reading XML data. These quotas may be increased by
changing the MaxArrayLength property on XmlDictionaryReaderQuotas or the
MaxItemsInObjectGraph setting. Line 1, position 3645191.
クライアントは次のように構成されています。
<client>
<endpoint address="http://someUri/someSvc" binding="basicHttpBinding" bindingConfiguration="SomeSvcBindingConfiguration" contract="SomeSvc" name="SomeSvc" behaviorConfiguration="ClientObjectBehavior" />
</client>
<behaviors>
<endpointBehaviors>
<behavior name="ClientObjectBehavior">
<dataContractSerializer maxItemsInObjectGraph="131072" />
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="SomeSvcBindingConfiguration" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:00:15" sendTimeout="00:00:15" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="10485760" maxBufferPoolSize="524288" maxReceivedMessageSize="10485760" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="false">
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
...
この例外がまだ発生している理由を誰かが提案できますか?
カスタム設定の同等の組み合わせでない限り、basicHttpBinding からバインディングを変更する機能はありません。