web-dev-qa-db-fra.com

Service WCF Le quota de longueur de tableau maximum (16384) a été dépassé

J'ai un service wsf et une application client. En essayant de communiquer le client et le service, j'ai reçu le message suivant:

" Le formateur a levé une exception lors de la désérialisation du message: une erreur s'est produite lors de la désérialisation du paramètre http://tempuri.org/:blob . Le message InnerException était "Une erreur s'est produite lors de la désérialisation de l'objet de type FileBlob. Le quota de longueur maximale du tableau (16384) a été dépassé lors de la lecture des données XML. Ce quota peut être augmenté en modifiant la propriété MaxArrayLength sur l'objet XmlDictionaryReaderQuotas utilisé lors de la création du XML lecteur. Ligne 1, position 25931. ". Veuillez consulter InnerException pour plus de détails. "

J'ai l'élément customBinding et il ne me permet pas d'insérer la section "readerQuotas". Dans les configurations client et service, j'ai l'élément de liaison suivant:

<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>

Merci d'avance pour votre aide:)

27
Dmitry Baranovsky

En fait, j'ai résolu le problème en ajoutant readerQuotas dans la section textMessageEncoding. Merci pour l'aide.

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

Vous devriez pouvoir ajouter un <readerQuotas> élément à l'intérieur du <binding> élément:

<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> 

Vous avez dit que cela "ne me permet pas d'insérer". Quel message d'erreur obtenez-vous?

18
Richard Szalay