2010-06-18 37 views
27

Tôi có dịch vụ wsf và ứng dụng khách. Trong khi cố gắng liên lạc với khách hàng và dịch vụ tôi đã nhận được thông báo sau:Dịch vụ WCF Hạn ngạch chiều dài mảng tối đa (16384) đã vượt quá

"Trình định dạng đã ném một ngoại lệ trong khi cố gắng deserialize thông báo: Đã xảy ra lỗi khi cố gắng deserialize tham số http://tempuri.org/:blob. Đã có một lỗi deserializing đối tượng của loại FileBlob.Các ​​hạn ngạch chiều dài mảng tối đa (16384) đã được vượt quá trong khi đọc dữ liệu XML.Giới hạn này có thể được tăng lên bằng cách thay đổi các MaxArrayLength bất động sản trên đối tượng XmlDictionaryReaderQuotas được sử dụng khi tạo XML reader. 1, vị trí 25931. '. Vui lòng xem InnerException để biết thêm chi tiết. "

Tôi có thành phần tùy chỉnh và không cho phép tôi để chèn phần "readerQuotas". Trong cả hai khách hàng và dịch vụ configs Tôi có yếu tố ràng buộc sau:

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

Cảm ơn trước sự giúp đỡ nào :)

Trả lời

18

Bạn sẽ có thể để thêm một yếu tố <readerQuotas> bên trong <binding> yếu tố:

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

Bạn đã đề cập rằng "không cho phép tôi chèn". thông báo lỗi gì bạn nhận được?

+6

có vẻ như để tùy chỉnh ràng buộc người đọcQuotas phải được lồng trong bất kỳ MessageEncoding (textMessageEncoding, binaryMessageEncoding ...) nào bạn đã đặt. Các mã hóa là các phần tử con của Aaginor

+3

Đặt nó trực tiếp trong '' '' hoạt động cho tôi. – AndiDog

+0

có nó hoạt động cho tôi. Tôi phải thêm tệp cấu hình máy khách wcf – Mahesh

42

Thực ra, tôi đã giải quyết được vấn đề bằng cách thêm trình đọcQuotas trong phần textMessageEncoding. Cảm ơn sự giúp đỡ.

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

điều này cũng hoạt động đối với các mã hóa thư khác như Aaginor

Các vấn đề liên quan