The maximum string content length quota (8192) has been exceeded while reading XML data

简介: 原文: The maximum string content length quota (8192) has been exceeded while reading XML data   问题场景:在我们WCF服务发布后,我们要确保服务端以及客户端的配置文件允许合适大小的传输设置。

原文: The maximum string content length quota (8192) has been exceeded while reading XML data

 

问题场景:在我们WCF服务发布后,我们要确保服务端以及客户端的配置文件允许合适大小的传输设置。笔者在发布WCF服务时,服务端的绑定未做传输大小的设置(采用了默认,maxStringContentLength默认大小为8192),而我们在传输序列化的数据时,大小超过了这个限制。

 读取 XML 数据时,超出最大字符串内容长度配额 (8192)。通过更改在创建 XML 读取器时所使用的 XmlDictionaryReaderQuotas 对象的 MaxStringContentLength 属性,可增加此配额。

 

问题原因:服务端或者客户端关于传输大小的未做设置,maxStringContentLength默认大小为8192,实际传输大于8192,由此产生异常。

 

解决方案:

1.确定是客户端还是服务端的限制。

 

2.在客户端或服务器的做如下配置:

 

<binding name="xxx" maxReceivedMessageSize="2147483647">

<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647"

maxNameTableCharCount="2147483647" />

security>

</binding>

代码中可修改如下:

  MyServiceClient service = null;
            //MyServiceClient service = new MyServiceClient();
            try
            {


                System.ServiceModel.Channels.CustomBinding bing = new System.ServiceModel.Channels.CustomBinding(
                        new System.ServiceModel.Channels.BindingElement[]{ 
                new BinaryMessageEncodingBindingElement(){ ReaderQuotas= new System.Xml.XmlDictionaryReaderQuotas {
                    MaxDepth=2147483647, 
                    MaxStringContentLength=2147483647,  
                    MaxArrayLength=2147483647, 
                    MaxBytesPerRead=2147483647}},
                new HttpTransportBindingElement()
                        });

                bing.Name = "CustomBinding_DataService";
                EndpointAddress address = new EndpointAddress(http://www.xxx.com/MyService.svc);

                service = new MyServiceClient(bing, address);
          
            }
            catch (Exception ex)
            {
                throw ex;
            }

 


 

目录
相关文章
|
5月前
|
SQL 分布式计算 大数据
MaxCompute操作报错合集之在数据同步时,遇到报错"InvalidData: The string's length is more than 8388608 bytes."是什么导致的
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
110 0
|
5月前
|
Java 程序员 API
JavaSE——常用API(1/3)-包、String概述、String常用方法(length、charAt、遍历字符串、toCharArray......)
JavaSE——常用API(1/3)-包、String概述、String常用方法(length、charAt、遍历字符串、toCharArray......)v
37 0
|
6月前
|
XML Java 数据库连接
Spring Data JPA入门简解与XML配置实现
Spring Data JPA入门简解与XML配置实现
264 0
|
6月前
|
XML SQL Java
springboot 项目启动报Has been loaded by XML or SqlProvider, ignoring the injection of the SQL的错误的解决方案
springboot 项目启动报Has been loaded by XML or SqlProvider, ignoring the injection of the SQL的错误的解决方案
806 0
The SqString for Sequential string | Data
The code in Data book (5th Edition) from the 123 page to 126 page
90 0
|
SQL XML Java
Data Access 之 MyBatis(三) - SQL Mapping XML(Part C)(下)
Data Access 之 MyBatis(三) - SQL Mapping XML(Part C)
Data Access 之 MyBatis(三) - SQL Mapping XML(Part C)(下)
|
SQL XML Java
Data Access 之 MyBatis(三) - SQL Mapping XML(Part C)(上)
Data Access 之 MyBatis(三) - SQL Mapping XML(Part C)
Data Access 之 MyBatis(三) - SQL Mapping XML(Part C)(上)
|
SQL XML 安全
Data Access 之 MyBatis(三) - SQL Mapping XML(Part B)(下)
Data Access 之 MyBatis(三) - SQL Mapping XML(Part B)
Data Access 之 MyBatis(三) - SQL Mapping XML(Part B)(下)
|
SQL XML 缓存
Data Access 之 MyBatis(三) - SQL Mapping XML(Part B)(上)
Data Access 之 MyBatis(三) - SQL Mapping XML(Part B)
Data Access 之 MyBatis(三) - SQL Mapping XML(Part B)(上)
|
SQL XML 缓存
Data Access 之 MyBatis(三) - SQL Mapping XML(Part A)
Data Access 之 MyBatis(三) - SQL Mapping XML(Part A)
Data Access 之 MyBatis(三) - SQL Mapping XML(Part A)