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服务发布后,我们要确保服务端以及客户端的配置文件允许合适大小的传输设置。笔者在发布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;
            }
时间: 2024-12-18 11:16:56

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

异常信息:The maximum string content length quota (8192) has been exceeded while reading XML data 问题:调用第三方的WCF服务,产生上述异常信息 分析: 在公布WCF host端时,要确保host端以及客户端的设置允许一定大小的数据传输. 如果未设置传输大小,maxStringContentLength默认大小为8192. 1)如果第三方服务未设置maxStringContentLength或者设置的maxS

WCF服务接口多,客户端在引用时出错!报WCF The maximum nametable character count quota (16384) has been exceeded while reading XML data错误

原文:WCF服务接口多,客户端在引用时出错!报WCF The maximum nametable character count quota (16384) has been exceeded while reading XML data错误 在服务端中定义接口太多时,在客户端的服务引用时,报错误: 元数据包含无法解析的引用:“net.tcp://localhost:8081/BaseData/mex”.    XML 文档中有错误.    读取 XML 数据时,超出最大名称表字符计数配额 (1

Performance - Method passes constant String of length 1 to character overridden method

This method passes a constant literal String of length 1 as a parameter to a method, that exposes a similar method that takes a char. It is simpler and more expedient to handle one character, rather than a String. Instead of making calls like: String

关于string的length

在C++里面,std::string的length()返回的是字节数,与编码方式有关. 1 int main() 2 { 3 std::string s = "我是中国人"; 4 std::cout << s.length() << std::endl; 5 std::cout << strlen(s.c_str()) << std::endl; 6 } 上面的代码,使用GB2312编码,输出结果是10和10. 而在C#里面,string

ord() expected string of length 1, but int found

源代码是这样: s=b'^SdVkT#S ]`Y\\!^)\x8f\x80ism' key='' for i in s:     i=ord(i)-16     key+=chr(i^32) print (key) 运行后出现了问题:ord() expected string of length 1, but int found 之所以出现这个问题,是在字符串转换过程中出现了一个小错误,在一系列百度和谷歌后,发现概念还是很迷糊,但是在曙光大佬的解答后,明白了怎么处理,就是在s后加"",

powerpivot 2013 已超出每个用户的最大允许会话数 The maximum numberof allowed sessions for each user has exceeded

打开已经做好的powerpivot文件之后,出现如下错误: 已超出每个用户的最大允许会话数 The maximum numberof allowed sessions for each user has exceeded 解决方法是,在管理中心,excel services应用程序中,全局配置,里面的会话管理中,将"每个用户的最大会话数"由25,改成250. 重新浏览后,页面正常.

hiho_1059_string matching content length

题目大意 两个字符串strA和strB(长度最大为2100),他们中按照顺序有一些公共的子串,且公共子串的长度大于等于3,否则不认为是合法的,比如 abcdef 和 abcxcdef, 按照顺序有合法公共子串abc def 或者 cdef.     按照顺序取出一些公共子串,有不同的取法,求这些取法中公共子串长度之和的最大值. 题目分析 字符串长度最大为2100,因此直接枚举搜索会超时,考虑使用动态规划,且复杂度要降到 O(n^3) 甚至 O(n^2). 用状态 dp[i][j][0] 表示st

tcl之string操作-length/index/range/replace

1.1 Implement an algorithm to determine if a string has all unique characters. What if you cannot use additional data structures.

思路: 假设给定字符串用的是ASCII编码,那么总共就只有256个字符,新建一个256个元素的boolean数组, 遍历字符串,将出现的字符在boolean数组所在位置置 1.如果碰到已经置一,表明出现重复字符,返回false. public class IsUniqueChars_1 { public boolean solu(String s) { boolean table[] = new boolean[256]; for (int i = 0; i < s.length(); i++)