永发信息网

如何解决WCF传递大数据的问题

答案:1  悬赏:10  手机版
解决时间 2021-04-10 02:37
如何解决WCF传递大数据的问题
最佳答案
使用WCF的默认DataContractSerializer手动去序列化成byte[],然后接收后再手动去反序列化,能解决这个问题。也就是说单纯的byte[]能过去,直接将下面代码中的list以List返回去就是出现LZ遇到的问题。

也就是说序列化与反序列化这一大块数据都没问题。主要问题还是出现在WCF组装消息上了。
设置一下 ReaderQuotas 这个属性,这是设置消息复杂性的。
感觉这种症状很像被DOS干掉的感觉,于是想到ReaderQuotas。

下面是我尝试的例子。
C# code
publicbyte[] GetMays() { DataContractSerializer DCZ =newDataContractSerializer(typeof(List)); List list =new List(); for (int i =0; i <30000; i++) { May tmp =new May { Name =DateTime.Now.ToString("yyyy-MM-dd") }; list.Add(tmp); } using(MemoryStream fs =new MemoryStream()) { DCZ.WriteObject(fs, list);return fs.ToArray(); } }
-------------------

用你这个方法搞定。客户端还要设置下
netTcpBinding.ReaderQuotas.MaxArrayLength = 2147483647;
netTcpBinding.ReaderQuotas.MaxStringContentLength = 2147483647;
netTcpBinding.ReaderQuotas.MaxBytesPerRead = 2147483647;

//-------------------------------
System.Diagnostics.Stopwatch myWatch = new System.Diagnostics.Stopwatch();
myWatch.Start();
// TaxiInfo[] taxiInfos = PositionService.GetAllTaxiInfos();
byte[] sds = PositionService.GetMays();
myWatch.Stop();
Console.WriteLine("耗时:" + myWatch.ElapsedMilliseconds + "ms");

MemoryStream memory = new MemoryStream(sds);
XmlDictionaryReader reader =
XmlDictionaryReader.CreateTextReader(memory, new XmlDictionaryReaderQuotas());
DataContractSerializer ser = new DataContractSerializer(typeof(List));
// Deserialize the data and read it from the instance.
List deserializedPerson =
(List)ser.ReadObject(reader, true);
reader.Close();
// Console.WriteLine(deserializedPerson);

这样就没问题了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我是一个新手但没找老师,吹出来的箫声音一点
中国邮政小包发送到菲律宾要多久
惠氏奶粉新老配方怎么区分
单选题在Cu与稀HNO3的反应中,如果有1molHNO3
如何重拾英语,怎样才能让人重拾自信
啤酒屋地址在什么地方,想过去办事
关于华南理工心理硕士。
想知道: 南宁市 从东葛望园路口到南宁市津头
在排球赛中,二传手传过来的球,主攻手用大小
请求别人原谅的诗句,一首关于请求别人原谅的
板栗烧鸡可以用炒好的板栗不
海尔电视换台怎么突然就要黑一下
LY品牌润滑油泵2232-200T操作说明
我有一瓶JOHNNIE WALKER BLUE LABEL,谁能告诉
如图是某生态系统中碳循环和能量流动示意图.
推荐资讯
三九二二猜一数字
电话后面加plus是什么意思
下列事例中属于凝华现象的是A.水结成了冰B.寒
平山县哪个电话是受理移动宽带投诉
铁东区个体私营企业协会东长甸分会我想知道这
水管一直流水又无法关掉水,不能用胶沾接管子
伴随着风雨云突变这个你越走越远是什么歌
动物有关的天气歇后语,什么歇后语的下一句是
480分统招能考上长春哪个高中
一天之中人在几点钟的时候提问的欲望最强
上海明捷万丽酒店怎么去啊,有知道地址的么
----Areyouhappythatyouroldfriendvisitedyou
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?