问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

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

发布网友 发布时间:2024-10-21 07:30

我来回答

1个回答

热心网友 时间:2024-11-05 02:31

使用WCF的默认DataContractSerializer手动去序列化成byte[],然后接收后再手动去反序列化,能解决这个问题。也就是说单纯的byte[]能过去,直接将下面代码中的list以List<May>返回去就是出现LZ遇到的问题。

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

下面是我尝试的例子。
C# code
publicbyte[] GetMays() { DataContractSerializer DCZ =newDataContractSerializer(typeof(List<May>)); List<May> list =new List<May>(); 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<TaxiInfo>));
// Deserialize the data and read it from the instance.
List<TaxiInfo> deserializedPerson =
(List<TaxiInfo>)ser.ReadObject(reader, true);
reader.Close();
// Console.WriteLine(deserializedPerson);

这样就没问题了。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
收到别单位给的承兑汇票 我单位在给别的单位 这笔业务应该怎么做啊? 荔枝什么生肖 均衡器怎样调成重低音 电脑eq设置低音电脑EQ均衡器怎么设置达到最佳音效 第一排是什么单词 人生中的黑暗乐章——Agust 乐评 Sigur Ros乐队简介 ...在这部影片里面名字叫Agust还是什么的、求名字 请大大们给个英文名 大叶芹叶子可以吃吗 魔兽争霸不死族详细攻略,打法,技巧,不要弄江湖术语,我是个菜鸟,字面简... 不能以劳务出资的是什么企业 lofer官网是哪个? 帮我鉴定已下米米号的价值 15555557176这个号值多少钱 大家看一下这个米米号值多少钱 大家看看我的这个米米号值做少钱? ...国142°E经线附近气温、降水量分布图。读图,回答下列各题。 小题1... 贴吧客户端有看过的贴吧的记录,有的没有点喜欢该吧,能不能把那些贴吧... ...昨天看了一个小时贴吧被百度云客户端吃掉300多M流量,我已经卸_百 ... 在销售中怎么样更快拉近自己与陌生顾客之间的关系?大神们帮帮忙 怎样宣传自己的新产品比较好啊?如题 谢谢了 请问如何在校园帮商家宣传?我们拉赞助,他们需要宣传大神们帮帮忙 怎么去宣传自己的店铺啊大神们帮帮忙 铝合金门窗工厂 厂家哪家价格低? 廉政公署是什么机构 廉政公署要是贪污怎么办 贴吧注册信息能保留多久?能根据昵称查出注册时的ip和手机硬件mac地址吗... 请问玩贴吧的人,一般se qing贴会保留多久 贴吧信息能保留多长时间 魔兽不死族的操纵 魔兽争霸3不死攻略 工伤认定完,还没做认定级别,可以申请康复治疗 如何在DOS下拷贝数据 如何在dos下,将win98光盘中所有文件包括文件夹中的文件考到c盘上 不死族有多少种打法? ...宽4CM,高2CM的长方体木块锯成两个长方体木块,表面积最大增加多少最... ...宽4cm、高2cm的长方体木块锯成两个长方体木块,表面积最多增加多少... 把一个长六厘米,宽四厘米,高三厘米的长方体截成两个长方体,表面积最... ...两厘米的长方体木块把他锯成两个长方体木块表面积增加最多增加多少... ...厘米、高4厘米的长方体木块锯成两个小长方体,表面及可能增加40平方厘... 市场法步骤 怎么选择物体的参照物? 如何正确选择参照物? 描述一个物体的运动,参考系可以任意选取,参考资料说对,若和运动物体速... 物理选择参照物的方法? 下列关于参照物的选择正确的是 [ ] A.参照物一定是静止不动的物体B... 关于参照物以下说法正确的是 A.任何情况下,都应选地面为参照物 B... 物理 参照物的选择是---的,究竟选哪一个物体为参照物,主要由---决定... ...A.研究地面上的物体的运动,可以不选参照物。 B.参照物应是_百度知...
  • 焦点

最新推荐

猜你喜欢

热门推荐