3

サービスを消費する 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それを搭載したマシンを持っていますが、そのマシンでこのエラーが発生しません!!

私はあらゆる種類のものを試しましたが、この問題を回避することはできません。

4

1 に答える 1

1

クライアント構成とサービス構成の両方で設定を変更してください。例外が実際に発生している場所を確認するのは、少し混乱する場合があります。

于 2013-06-13T15:53:44.417 に答える