Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当大量记录从WCF发送到Silverlight时,OutOfMemory异常_Wcf_Silverlight_Gzip_Out Of Memory - Fatal编程技术网

当大量记录从WCF发送到Silverlight时,OutOfMemory异常

当大量记录从WCF发送到Silverlight时,OutOfMemory异常,wcf,silverlight,gzip,out-of-memory,Wcf,Silverlight,Gzip,Out Of Memory,我有一个Silverlight应用程序,在其中我调用我的WCF服务从数据库获取数据。如果有少量记录,则它工作正常,但如果有许多记录,则抛出System.OutOfMemory异常 我在WCF错误日志文件中跟踪了它。有没有办法将来自WCF的数据压缩到Silverlight应用程序?U可以对WCF消息使用IIS动态压缩。 阅读下一篇文章: 在您的服务web配置中,将此项添加到服务行为和端点行为中。然后它可以传输高达2 gb的数据 <dataContractSerializer maxIte

我有一个Silverlight应用程序,在其中我调用我的WCF服务从数据库获取数据。如果有少量记录,则它工作正常,但如果有许多记录,则抛出System.OutOfMemory异常


我在WCF错误日志文件中跟踪了它。有没有办法将来自WCF的数据压缩到Silverlight应用程序?

U可以对WCF消息使用IIS动态压缩。 阅读下一篇文章:


在您的服务web配置中,将此项添加到服务行为和端点行为中。然后它可以传输高达2 gb的数据

 <dataContractSerializer maxItemsInObjectGraph="2147483647"/>

一次性传输500000(50万)条记录对于您的系统来说太大,无法处理。我还想说,对于您的用户来说,它太多了,无法处理

您应该将其分解为几页数据,一次只返回几页。Silverlight/WCF(RIAServices)DomainDataService可以为您处理所有这些:

<riaControls:DomainDataSource QueryName="GetResults"
                              LoadSize="200"
                              PageSize="100"
                              AutoLoad="True"/>

将寻呼机控件添加到页面,以在用户控制下的数据页面中移动

这使您的应用程序更具响应性,因为您每次只返回少量数据。一次性返回500000条记录也很可能导致连接速度慢的人超时


我还建议您考虑过滤数据,以便只返回用户感兴趣的数据。

您是否应该编辑wcf服务的配置文件?如果您还没有这样做。感谢回复,但我已经这样做了。感谢回复,但我已经将此属性设置为最大限制,但我正在尝试将500000多条记录从Wcf传输到silverlight。我认为这是您可以通过Wcf服务传输的最大金额。我建议您使用分页或线程机制来传输每10000个数据。这就是我在我的项目中所做的。谢谢你的回复。你能给我一个示例吗?在这个示例中,我可以使用gZip压缩将数据从wcf传输到silverlight。谢谢你的回复,我在IIS中配置了HTTP压缩,但当我将var request=HttpWebRequest.Create(“);request.Headers[“Accept”]=“application/json"; request.Headers[“接受编码”]=“gzip,deflate”;在我的silverlight应用程序中,正如文章中提到的,我遇到了以下错误“silverlight应用程序中未处理的错误,必须使用适当的属性修改此标题”。您能否给我一个示例,说明如何在我的应用程序中使用GZip压缩。感谢您的回复。您能给我一个示例吗?在这个示例中,我可以使用gZip压缩将数据从wcf传输到silverlight。@user1796141-这与gZip压缩无关。