WCF大数据量处理

最近在处理投产问题里,遇到酒店列表总展示不了数据,查找原因发现系统报了“格式化程序尝试对消息反序列化时引发异常: 尝

试对参数 http://tempuri.org/ 进行反序列化时出错: SearchResult。InnerException 消息是“对象图中可以序列化或反序列

化的项目数目上限为“65536”。请更改对象图或增加 MaxItemsInObjectGraph 的配额。”的错误,当把服务端返回的酒店

个数调小时系统可正常展示价格,初步判断这个是由于酒店价格数据量过大客户端在接收数据时异常了

于是检查客户端配发现已配置可接收的数量已经是最大值,如下
 
 HttpTransportBindingElement element = new HttpTransportBindingElement();
            element.MaxReceivedMessageSize = 2147483647;
            element.MaxBufferPoolSize = 2147483647;
            element.MaxBufferSize = 2147483647;
 
可见不是单纯的接收数据量大小问题,再仔细分析报错问题指的是在“序列化”和“反序列化”的数目上限问题,建议增加
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你希望通过 WCF 接收 `uni.uploadFile` 的数据,而不仅仅是文件,你可以按照以下步骤进行操作: 1. 在 WCF 服务的契约中,定义一个操作合同,用于接收文件数据。可以使用 `byte[]` 类型的参数来接收数据。例如: ```csharp [ServiceContract] public interface IFileService { [OperationContract] void UploadFileData(byte[] fileData); } ``` 2. 在服务实现类中,实现该操作合同,并将 `byte[]` 类型的参数用于处理数据。例如: ```csharp public class FileService : IFileService { public void UploadFileData(byte[] fileData) { // 处理文件数据 // 可以进行自定义操作,如保存到数据库、解析数据等 } } ``` 3. 在服务的配置文件中,配置绑定和终结点。可以使用基于 HTTP 的绑定,如 `basicHttpBinding` 或 `webHttpBinding`。例如: ```xml <system.serviceModel> <bindings> <basicHttpBinding> <binding name="BasicHttpBinding_IFileService" /> </basicHttpBinding> </bindings> <services> <service name="YourNamespace.FileService"> <endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IFileService" contract="YourNamespace.IFileService" /> </service> </services> </system.serviceModel> ``` 4. 在客户端调用代码中,引用服务契约并创建代理对象。然后,可以使用代理对象调用 `UploadFileData` 方法并传递数据。例如: ```csharp using (var client = new FileServiceClient()) { byte[] fileData = Encoding.UTF8.GetBytes("Your file data"); client.UploadFileData(fileData); } ``` 这样,你就可以在 WCF 中成功接收 `uni.uploadFile` 的数据。记得根据实际需求进行适当的异常处理和数据操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值