WCF页面搜索结果&;数据导出

WCF页面搜索结果&;数据导出,wcf,export,paging,Wcf,Export,Paging,我走进了一个为数据层使用WCF服务的项目。当前,当网格需要数据时,将返回所有行,并将结果绑定到网格,数据集将填充到会话变量中以进行分页/排序/重新绑定。我们已经遇到了最大消息大小的问题,所以我认为是时候将fetch和cache转换为只获取当前页面了 票面价值这似乎很容易,但有一个小陷阱。允许用户在任意点导出整个结果集。这意味着出于网格查看的目的,获取当前页面是可以的,但是当他们想要进行导出时,我仍然需要调用所有数据 这让我又回到了最大消息大小的问题上。对于这种类型的设置,建议采用什么方法 我们目

我走进了一个为数据层使用WCF服务的项目。当前,当网格需要数据时,将返回所有行,并将结果绑定到网格,数据集将填充到会话变量中以进行分页/排序/重新绑定。我们已经遇到了最大消息大小的问题,所以我认为是时候将fetch和cache转换为只获取当前页面了

票面价值这似乎很容易,但有一个小陷阱。允许用户在任意点导出整个结果集。这意味着出于网格查看的目的,获取当前页面是可以的,但是当他们想要进行导出时,我仍然需要调用所有数据

这让我又回到了最大消息大小的问题上。对于这种类型的设置,建议采用什么方法

我们目前正在使用wsHttpBinding


感谢您的帮助。

我认为对于大文件,建议使用WCF流媒体。我不确定您的场景的确切细节,但您可以将此作为起点:


在你的情况下,我可能会这样做

  • 使用“paged”GetData()方法创建一个服务,其中指定页面索引和页面大小作为附加参数。这将为“常规”使用提供一个干净的界面,并且不会达到maxMessageSize的限制

  • 创建第二个服务(或方法)来发送所有数据——理想情况下,您可以在发送数据之前将其打包到服务器上的ZIP文件或其他文件中。如果ZIP文件仍然太大,您可能希望查看处理大文件的WCF流,Andy已经指出了这一点

maxMessageSizeLimit的存在有一个很好的理由:为了避免拒绝服务攻击,WCF服务可能会被大量消息淹没,从而陷入瘫痪。如果可以,请始终记住这一点,不要将maxMessageSize提升到2GB—它可能会反过来咬到您:-)