web-dev-qa-db-ja.com

WCFサービスアレイの最大長の割り当て(16384)を超えました

Wsfサービスとクライアントアプリケーションがあります。クライアントとサービスを通信しようとすると、次のメッセージが表示されます。

"メッセージをデシリアライズしようとしたときにフォーマッタが例外をスローしました:パラメータをデシリアライズしようとしたときにエラーが発生しました http://tempuri.org/:blob 。 InnerExceptionメッセージは、「タイプFileBlobのオブジェクトのデシリアライズ中にエラーが発生しました。XMLデータの読み取り中に最大配列長の割り当て(16384)を超えました。XMLの作成時に使用されるXmlDictionaryReaderQuotasオブジェクトのMaxArrayLengthプロパティを変更することにより、この割り当てを増やすことができます。リーダー。行1、位置25931。 '。詳細については、InnerExceptionを参照してください。 "

CustomBinding要素があり、「readerQuotas」セクションを挿入できません。クライアント構成とサービス構成の両方に、次のバインディング要素があります。

<customBinding>
  <binding name="LicenseServiceBinding"
                closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00">
      <security authenticationMode="UserNameOverTransport">
          <localClientSettings maxClockSkew="00:07:00" />
          <localServiceSettings maxClockSkew="00:07:00" />
      </security>
      <windowsStreamSecurity />
      <httpsTransport maxReceivedMessageSize="2147483646"/>          
  </binding>
</customBinding>

助けてくれてありがとう:)

27

実際、私はtextMessageEncodingセクション内にreaderQuotasを追加することで問題を解決しました。助けてくれてありがとう。

<textMessageEncoding messageVersion="Soap11">
          <readerQuotas maxDepth="32" maxStringContentLength="5242880" maxArrayLength="2147483646" maxBytesPerRead="4096" maxNameTableCharCount="5242880"/>
</textMessageEncoding>
43

<readerQuotas>要素内に<binding>要素を追加できるはずです。

<customBinding> 
  <binding name="LicenseServiceBinding" 
                closeTimeout="00:01:00" openTimeout="00:01:00" 
                receiveTimeout="00:10:00" sendTimeout="00:01:00"> 
      <security authenticationMode="UserNameOverTransport"> 
          <localClientSettings maxClockSkew="00:07:00" /> 
          <localServiceSettings maxClockSkew="00:07:00" /> 
      </security> 
      <readerQuotas maxArrayLength="32768" />
      <windowsStreamSecurity /> 
      <httpsTransport maxReceivedMessageSize="2147483646"/>           
  </binding> 
</customBinding> 

「挿入できません」とのことですが、どのようなエラーメッセージが表示されますか?

18
Richard Szalay