サービスを消費する Web サイトとサービスをホストする Web サイトで SOA を使用しているという問題があります。私のサービスの 1 つはイメージ (byte[]) を受け入れます。83kb のイメージを WCF サービスに渡すと、次のエラーが発生します。
XML データの読み取り中に、最大配列長のクォータ (16384) を超えました。このクォータは、XML リーダーの作成時に使用される XmlDictionaryReaderQuotas オブジェクトの MaxArrayLength プロパティを変更することによって増やすことができます。
このサービスのサーバー側の構成に特定の構成はありません。以下は、消費する Web アプリケーションの web.config ファイルにあります。
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_ISchoolSettings" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="false">
<readerQuotas maxDepth="32" maxStringContentLength="998192" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="2147483647" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:50977/Interface/Schools.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISchoolSettings" contract="Services.Schools.ISchoolSettings" name="BasicHttpBinding_ISchoolSettings" />
</client>
</system.serviceModel>
.net はMaxArrayLength=2147483647
、このバインディング構成に設定した事実を無視しているようです。
ここを利用して.net 4.0
います。不思議なことに、私は.net 4.5
それを搭載したマシンを持っていますが、そのマシンでこのエラーが発生しません!!
私はあらゆる種類のものを試しましたが、この問題を回避することはできません。