解决WCF传输的数据量过大问题
今天写了个WCF接口,然后自测通过,和别人联调时报 远程服务器返回错误: (413) Request Entity Too Large 错误!记得以前写的时候也出现过这个错误,大致解决办法是设置服务器端的接收最大消息的限制改大点。但具体的配置节点及参数有点忘记了,网上搜了些资料改正并经过自测验证后通过,主要的配置如下:
服务端返回数据量过大的错误时,就去修改服务端的配置:
在bindings节点添加一个binding配置,主要是指定最大的接收数据,主要是maxReceivedMessageSize属性的值:
<binding name="LargeDataTransferServicesBinding" maxReceivedMessageSize="2147483647"
messageEncoding="Text" transferMode="Streamed" sendTimeout="00:10:00" />
然后给相应的Service指定bindingConfiguration属性,指向之前的这个binding配置,注意,因为是服务端的配置,所以是在services节点中加配置,contract这个节点是你的服务契约名:
<services>
<service name="Huazhu.Certificate.WCFService.SyncDataService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="LargeDataTransferServicesBinding" name="XXX" contract="Huazhu.Certificate.WCFService.ISyncDataService" />
</service>
</services>
配置好后去测试,然后报了另外一个错误,大致如下:
格式化程序尝试对消息反序列化时引发异常: 对操作“PushMasterData”的请求消息正文进行反序列化时出现错误。读取 XML 数据时,超出最大字符串内容长度配额 (8192)。通过更改在创建 XML 读取器时所使用的 XmlDictionaryReaderQuotas 对象的 MaxStringContentLength 属性,可增加此配额。 行 1,位置 2177
好,现在应该是数据能接收到了,看字面上意思应该是要设置个MaxStringContentLength什么属性的值,貌似默认的读取长度不够,然后在经过修改binding节点的配置如下:
<binding name="LargeDataTransferServicesBinding" maxReceivedMessageSize="2147483647"
messageEncoding="Text" transferMode="Streamed" sendTimeout="00:10:00" >
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
</binding>
经过测试调用成功,但想想如果提供的WCF接口非常多,每个Service都得配置,这样就太多的重复了。有没有更简单的呢?直接上如下代码说明,只需要配置一个没有name属性的binding节点就可以,连前面的Service都可以不用配置了,我的理解是没有配置name属性,就相当于是默认的binding,除非单独制定了配置,不然都会走这个默认的绑定。
<binding closeTimeout="00:10:00" receiveTimeout="00:20:00" sendTimeout="00:20:00"
maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"/>
这个配置同样适用于WCF的客户端配置,也是只需要一个binding即可搞定,本文中的节点的其他一些属性若有不理解,请自行去网上搜,资料很多。
解决WCF传输的数据量过大问题的更多相关文章
- pinpoint 单机HBASE数据量过大问题解决
Pinpoint接入业务监控后数据量大涨,平均每周Hbase数据增量35G左右,数据量太大,需要对数据进行定期清理,否则监控可用性降低. 操作步骤 查找出数据大的hbase表 [root@iZ28ov ...
- WCF传输大数据的设置
在从客户端向WCF服务端传送较大数据(>65535B)的时候,发现程序直接从Reference的BeginInvoke跳到EndInvoke,没有进入服务端的Service实际逻辑中,怀疑是由于 ...
- 【转】WCF传输大数据的设置
在从客户端向WCF服务端传送较大数据(>65535B)的时候,发现程序直接从Reference的BeginInvoke跳到EndInvoke,没有进入服务端的Service实际逻辑中,怀疑是由于 ...
- Oracle数据库--解决单张表中数据量巨大(大数据、数据量上百万级别,后查询,更新数据等耗时剧增)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/QQ578473688/article/details/54561397 思路1:采用备份表 备份表中 ...
- WCF传输大数据 --断点续传(upload、download)
using System; using System.IO; using System.Runtime.Serialization; using System.ServiceModel; namesp ...
- WCF传输大数据的设置2
本节主要内容:1.如何读取Binding中的binding元素.2.CustomBinding元素的基本配置.3.代码示例 一.Bingding是由binding元素构成的,可以根据实际需要,进行适当 ...
- 【转载】大数据量传输时配置WCF的注意事项
WCF传输数据量的能力受到许多因素的制约,如果程序中出现因需要传输的数据量较大而导致调用WCF服务失败的问题,应注意以下配置: 1.MaxReceivedMessageSize:获取或设置配置了此绑定 ...
- WCF大数据量传输配置
WCF传输数据量的能力受到许多因素的制约,如果程序中出现因需要传输的数据量较大而导致调用WCF服务失败的问题,应注意以下配置: 1.MaxReceivedMessageSize:获取或设置配置了此绑定 ...
- 大数据量传输时配置WCF的注意事项
原文:大数据量传输时配置WCF的注意事项 WCF传输数据量的能力受到许多因素的制约,如果程序中出现因需要传输的数据量较大而导致调用WCF服务失败的问题,应注意以下配置: 1.MaxReceivedMe ...
随机推荐
- [19/04/20-星期六] Java的动态性_字节码操作(Javassist类库(jar包),assist:帮助、援助)
一.概念 [基本] /** * */ package cn.sxt.jvm; import javassist.ClassPool; import javassist.CtClass; import ...
- Js 中的 this
Js 中 this 的理解 this 是啥 ? this是 JavaScript 语言的一个关键字,它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用; 随着函数使用场合的不同,this ...
- [Python 网络编程] makefile (三)
socket.makefile(mode ='r',buffering = None,*,encoding = None,errors = None,newline = None )返回一个与套接字相 ...
- CSS3 - 新单位vw、vh、vmin、vmax使用详解(附样例)
像 px.em 这样的长度单位大家肯定都很熟悉,前者为绝对单位,后者为相对单位.CSS3 又引入了新单位:vw.vh.vmin.vmax.下面对它们做个详细介绍. 一.基本说明 1,vw.vh.vmi ...
- HDU 1142 A Walk Through the Forest(最短路+记忆化搜索)
A Walk Through the Forest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Jav ...
- java alibaba fastJson 遍历数组json
import java.util.*; import com.alibaba.fastjson.*; public class Test { public static void main(Strin ...
- WebClient 下载图片(文件)
public static string SaveImage(string url, string newfilename) { WebClient mywebclient = new WebClie ...
- SQL语句group by 与order by 执行顺序引发的一场“内斗”
直入主题!看看下面这SQL会不会报错?如果报错应该是什么错误! --说明:黑色字体都是列SELECT application_id, index_num, num, amount FROM `cred ...
- #leetcode刷题之路27-移除元素
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度.不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. ...
- LR分析-demo2
0.LR分析 用一个栈来保存文法符号和状态的信息,一个字符串保存输入信息. 使用栈顶的状态符号和当前的输入符号来检索分析表,来决定移进-归约分析的动作. 1.样例文法 "E>E+T&q ...