2010-06-18 14 views
27

Mam usługę wsf i aplikację kliencką. Starając się komunikować klienta i usługi stałam się następujący komunikat:Usługa WCF Przekroczono maksymalny limit długości tablicy (16384)

"Program formatujący zwrócił wyjątek podczas próby deserializacji komunikatu. Wystąpił błąd podczas próby deserializacji parametr http://tempuri.org/:blob Przesłanie było InnerException "Wystąpił błąd podczas deserializacji obiektu typu FileBlob. Przekroczono maksymalny limit długości tablicy (16384) podczas odczytu danych XML. Kwotę tę można zwiększyć, zmieniając właściwość MaxArrayLength na obiekcie XmlDictionaryReaderQuotas używanym podczas tworzenia czytnika XML. 1, pozycja 25931. "Zobacz InnerException po więcej szczegółów"

Mam element customBinding i nie pozwala mi wstawić sekcję "readerQuotas". W obu klienckich i usług configs Mam następujący element: wiązania

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

Dzięki z góry za wszelką pomoc :)

Odpowiedz

18

Powinieneś móc dodać element <readerQuotas> wewnątrz elementu <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> 

Wspomniał Pan, że "nie pozwala mi wstawić". Jaki komunikat o błędzie dostałeś?

+6

wydaje się, że za zwyczaj wiązania readerQuotas musi być zagnieżdżona w cokolwiek MessageEncoding (textMessageEncoding, binaryMessageEncoding ...) zostały ustawione. Kodowanie to element potomny: Aaginor

+3

Umieszczenie go bezpośrednio w '' '' działa dla mnie. – AndiDog

+0

tak to działa dla mnie. Muszę dodać plik konfiguracyjny klienta wcf – Mahesh

42

Właściwie rozwiązałem problem, dodając readerQuotas w sekcji textMessageEncoding. Dzięki za pomoc.

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

działa to również dla innych kodowań wiadomości, takich jak Aaginor

Powiązane problemy