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-11-01 01:24:26

The maximum string content length quota (8192) has been exceeded while reading XML data的相关文章

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 数据时,超出最大名称表字符计

简单的PHP数据库处理类

最近在看后盾网的php视频,主要内容是相关制作一个博客系统,感觉还是很有收获. 简单的数据库处理类 下面是其中讲到的一个简单的数据库处理类,请见源码:     代码如下 复制代码   <?php     /**     * Created by JetBrains PhpStorm.     * User: YangLiu     * Date: 2013-7-12     * Time: 下午6:19     * Description:这是一个简单的数据库操作类,便于快速向数据库插入数据.删

[Android]将应用崩溃信息汇报给开发者并重新启动应用

http://blog.csdn.net/sodino/article/details/6540329 在开发过程中,虽然经过测试,但在发布后,在广大用户各种各样的运行环境和操作下,可能会发生一些异想不到的错误导致程序崩溃.将这些错误信息收集起来并反馈给开发者,对于开发者改进优化程序是相当重要的.好了,下面就来实现这种功能吧. (更正:2012年2月9日18时42分07秒) 由于为历史帖原因,以下做法比较浪费,但抓取异常的效果是一样的. 1.对于UI线程(即Android中的主线程)抛出的未捕获

php解析url并得到url中的参数及获取url参数的四种方式_php实例

下面一段代码是php解析url并得到url中的参数,代码如下所示: <?php $url = 'http://www.baidu.com/index.php?m=content&c=index&a=lists&catid=6&area=0&author=0&h=0&region=0&s=1&page=1'; $arr = parse_url($url); var_dump($arr); $arr_query = convertU

Android实现将应用崩溃信息发送给开发者并重启应用的方法_Android

本文实例讲述了Android实现将应用崩溃信息发送给开发者并重启应用的方法.分享给大家供大家参考,具体如下: 在开发过程中,虽然经过测试,但在发布后,在广大用户各种各样的运行环境和操作下,可能会发生一些异想不到的错误导致程序崩溃.将这些错误信息收集起来并反馈给开发者,对于开发者改进优化程序是相当重要的.好了,下面就来实现这种功能吧. (更正时间:2012年2月9日18时42分07秒) 由于为历史帖原因,以下做法比较浪费,但抓取异常的效果是一样的. 1.对于UI线程(即Android中的主线程)抛

数据库在C++程序中使用方法

在本教程中,我假设大家都知道如何使用C++的类进行工作,因为我所有的数据结构,要立足于他们.我遇到过关于数据结构的教程,但是很难找到一个使用OOP来编写的.因此,这其中将主要集中于用一个类来编写数据结构. 栈 在编写代码时,堆栈是最常用的数据结构.它的概念简单,编写也比较简单.有这么一个情况,桌子上有堆成一堆的5本书,你想增加一本.应该怎么做?只要把书放在顶端就可以了.如果你想从这堆书中取出第3本呢?你只要一本接着一本把书移到顶端,直到第3本书处在顶端.然后取走第3本书,并使其他处在顶端. 你已

PostgreSQL PHP 开发者手册

标签 PostgreSQL , Java , php , ruby , python , C 背景 转自 http://zetcode.com/db/postgresqlphp/ 正文 This is a PHP tutorial for the PostgreSQL database. It covers the basics of PostgreSQL programming with PHP. The examples were created and tested on Linux. T

asp.net GridView数据绑定与xml绑定

asp教程.net gridview数据绑定与xml绑定 当gridview编辑状态获取新值时,往往获取的是修改前的值. 我的分析:        很多时候我把数据绑定函数调用直接放在page_load()函数里,当gridview编辑状态获取新值时,往往获取的是修改前的值,这是因为页面加载先执行page_load()函数,数据绑定函数就会再次执行,这样gridview里的值就会又变成修改前的值,获取值时就是更改前的值. 解决办法:       把数据绑定函数放在page_load()函数的if

length 属性 (String)

  返回 String 对象的长度. strVariable.length"String Literal".length 说明 length 属性包含一个整数,用来指出 String 对象中的字符数.String 对象中的最后一个字符的索引为 length - 1. 要求 版本 1 请参阅 length 属性(Array) | length 属性(Function) | String 对象的方法 | String 对象的属性 应用于: String 对象