2010-06-18 2 views
27

wsf 서비스 및 클라이언트 응용 프로그램이 있습니다. 클라이언트와 서비스를 전달하려고 할 때 다음 메시지가 나타납니다.WCF 서비스 최대 배열 길이 할당량 (16384)이 초과되었습니다.

"메시지를 deserialize하려고 할 때 포맷터에서 예외가 발생했습니다. 매개 변수 http://tempuri.org/:blob을 역 직렬화하려고 시도하는 동안 오류가 발생했습니다. InnerException 메시지는 다음과 같습니다. 'FileBlob 형식의 개체를 비 직렬화하는 동안 오류가 발생했습니다 .XML 데이터를 읽는 동안 최대 배열 길이 할당량 (16384)이 초과되었습니다 .XML 판독기를 만들 때 사용되는 XmlDictionaryReaderQuotas 개체의 MaxArrayLength 속성을 변경하면이 할당량을 늘릴 수 있습니다. 1, 위치 25931. '자세한 내용은 InnerException을 참조하십시오. "

나는 customBinding 요소를 가지고 있는데, "readerQuotas"섹션을 삽입하십시오. 클라이언트와 서비스 CONFIGS 모두에서 나는 다음과 같은 바인딩 요소가 : 어떤 도움 :) 사전에

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

감사를

답변

18

당신은 <binding> 요소 내부에 <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> 
     <readerQuotas maxArrayLength="32768" /> 
     <windowsStreamSecurity /> 
     <httpsTransport maxReceivedMessageSize="2147483646"/>   
    </binding> 
</customBinding> 

당신은 "나를 삽입 할 수 없다"고 언급했습니다. 어떤 오류 메시지가 나타 납니까?

+6

당신이 설정 한 (... textMessageEncoding, binaryMessageEncoding) 커스텀 readerQuotas 바인딩에 대한 어떤 MessageEncoding 내에 중첩 될 것 같다. 인코딩은 children 요소입니다. Aaginor

+3

""에 직접 입력하면 효과가 있습니다. – AndiDog

+0

네, 저에게 도움이됩니다. wcf 클라이언트 구성 파일을 추가해야합니다. – Mahesh

42

사실, textMessageEncoding 섹션 내에 readerQuotas를 추가하여이 문제를 해결했습니다. 도움 주셔서 감사합니다.

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

같은 다른 메시지 인코딩에도 사용할 수 있습니다. – Aaginor