博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Web Service 或 WCF调用时读取 XML 数据时,超出最大字符串内容长度配额(8192)解决方法...
阅读量:5076 次
发布时间:2019-06-12

本文共 1703 字,大约阅读时间需要 5 分钟。

1.调用服务时服务

  当我们使用 Web Service 或 WCF 服务时,常把读取的数据转化为string类型(xml格式),当数据量达到一 定数量时,会出现以下异常:

    错误格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ (命名空间)进行反序列化时出错: InnerException 消息是“反序列化对象异常,读取 XML 数据时,超出最大字符串内容长度配额 (8192)。通过更改在创建 XML 读取器时所使用的 XmlDictionaryReaderQuotas 对象的 MaxStringContentLength 属性,可增加此配额。

2.原因及解决方案

 

 WCF传输大数据时,因为WCF本身的安全机制导致的,限制了客户端与服务器资源传输大小,当传输的数据超过上限后会产生异常。

 

     发送大数据:在WCF服务端解决

                  NetTcpBinding binding =  new NetTcpBinding();

            binding.MaxReceivedMessageSize= 2147483647(更改这个数字) ;

     接收大数据:在WCF客户端解决

            NetTcpBinding binding =  new NetTcpBinding();

            binding.ReaderQuotas = new XmlDictionaryReaderQuotas()

                  { MaxStringContentLength = 2147483647(更改这个数字) };

Web Service 调用时,在绑定代理端是,添加如下BasicHttpBinding:

 有两种方法处理:

  第一种:在调用时传入Binding参数。

    

BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.None)                  { MaxReceivedMessageSize = int.MaxValue,                    MaxBufferSize = int.MaxValue,                    ReaderQuotas = new System.Xml.XmlDictionaryReaderQuotas()                   { MaxStringContentLength = 2147483647 }                  }DLTEST.ServiceReference2.CS_WebServiceSoapClient svs = new DLTEST.ServiceReference2.CS_WebServiceSoapClient(binding);

  第二种方法,改一下调用客户端的配置文件app.config

    增加binding节点下增加 readerQuotas节点控制

 

  

 

转载于:https://www.cnblogs.com/spring_wang/p/5888267.html

你可能感兴趣的文章
ambari 大数据安装利器
查看>>
java 上传图片压缩图片
查看>>
magento 自定义订单前缀或订单起始编号
查看>>
ACM_拼接数字
查看>>
计算机基础作业1
查看>>
Ubuntu 深度炼丹环境配置
查看>>
C#中集合ArrayList与Hashtable的使用
查看>>
从一个标准 url 里取出文件的扩展名
查看>>
map基本用法
查看>>
poj-1163 动态规划
查看>>
Golang之interface(多态,类型断言)
查看>>
Redis快速入门
查看>>
BootStrap---2.表格和按钮
查看>>
Linear Algebra lecture 2 note
查看>>
CRC计算模型
查看>>
Ajax之404,200等查询
查看>>
Aizu - 1378 Secret of Chocolate Poles (DP)
查看>>
csv HTTP简单表服务器
查看>>
OO设计的接口分隔原则
查看>>
数据库连接字符串大全 (转载)
查看>>