2010-06-18 25 views
27

Ho un servizio wsf e un'applicazione client. Durante il tentativo di comunicare il client e il servizio ho ottenuto il seguente messaggio:Servizio WCF È stata superata la quota massima della lunghezza dell'array (16384)

"Il formattatore ha generato un'eccezione durante il tentativo di deserializzare il messaggio:. Si è verificato un errore durante il tentativo di deserializzare parametro http://tempuri.org/:blob Il messaggio era InnerException "Si è verificato un errore di deserializzazione dell'oggetto di tipo FileBlob. La lunghezza massima della lunghezza dell'array (16384) è stata superata durante la lettura dei dati XML. Questa quota può essere aumentata modificando la proprietà MaxArrayLength sull'oggetto XmlDictionaryReaderQuotas utilizzato durante la creazione del lettore XML. 1, posizione 25931. "Per ulteriori dettagli, vedere InnerException."

Ho l'elemento CustomBinding e non mi consente inserire la sezione "readerQuotas". In entrambe le configurazioni client e il servizio Ho il seguente elemento vincolante:

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

Grazie in anticipo per qualsiasi aiuto :)

risposta

18

Si dovrebbe essere in grado di aggiungere un elemento <readerQuotas> all'interno dell'elemento <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> 

Hai detto che "non mi permette di inserire". Che messaggio di errore ricevi?

+6

sembra che per abitudine legare i readerQuotas deve essere annidato all'interno di qualunque MessageEncoding (textMessageEncoding, binaryMessageEncoding ...) è stata impostata. Le codifiche sono elementi secondari di Aaginor

+3

Inserirli direttamente nello '' '' funziona per me. – AndiDog

+0

sì, funziona per me. Devo aggiungere il file di configurazione del client wcf – Mahesh

42

In realtà, ho risolto il problema aggiungendo readerQuotas nella sezione textMessageEncoding. Grazie per l'aiuto.

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

anche per altre codifiche di messaggi come Aaginor

Problemi correlati