2010-06-18 15 views
27

J'ai un service wsf et une application cliente. Tout en essayant de communiquer le client et le service que j'ai reçu le message suivant:Service WCF Le quota de longueur de tableau maximum (16384) a été dépassé

"Le formatter a lancé une exception tout en essayant de désérialiser le message. Il y avait une erreur en essayant de désérialiser 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 maximal de longueur de 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 de l'objet XmlDictionaryReaderQuotas utilisé lors de la création du lecteur XML. 1, position 25931. 'S'il vous plaît voir InnerException pour plus de détails "

J'ai l'élément customBinding et il ne me permet pas insérer la section "readerQuotas". Dans les deux configs client et service je 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 toute aide :)

Répondre

18

Vous devriez être en mesure d'ajouter un élément <readerQuotas> dans l'élément <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> 

Vous avez mentionné qu'il "ne me permet pas d'insérer". Quel message d'erreur obtenez-vous?

+6

il semble que pour la liaison sur mesure les readerQuotas doit être imbriquée dans tout MessageEncoding (textMessageEncoding, binaryMessageEncoding ...) vous avez défini. Les Encodings sont des éléments enfants de Aaginor

+3

Le mettre directement dans le '' '' fonctionne pour moi. – AndiDog

+0

oui cela fonctionne pour moi. Je dois ajouter wcf fichier de configuration client – Mahesh

42

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

cela fonctionne également pour d'autres codages de message comme ainsi – Aaginor