簡體   English   中英

從WCF向Silverlight發送大量記錄時出現OutOfMemory異常

[英]OutOfMemory exception when large number of records is sent from WCF to Silverlight

我有一個Silverlight應用程序,在其中調用WCF服務以從數據庫中獲取數據。 如果記錄數少,則工作正常,但是如果記錄數多,則拋出System.OutOfMemory異常。

我已經在WCF錯誤日志文件中跟蹤了它。 是否有任何方法可以壓縮從WCF到Silverlight應用程序的數據?

U可以對WCF消息使用IIS動態壓縮。 閱讀下一個主題/文章:

啟用動態壓縮

IIS7上托管的WCF進行GZip壓縮

在您的服務Web配置中,將此項目添加到服務行為和端點行為中。 然后它可以傳輸高達2 GB的數據。

 <dataContractSerializer maxItemsInObjectGraph="2147483647"/>

一次傳輸500,000(半百萬)條記錄對於系統來說太大了。 我還要說的是,您的用戶無法應付的太多。

您應該將其分解為幾頁數據,一次只返回幾頁。 Silverlight / WCF(RIAServices)DomainDataService可以為您處理所有這一切:

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

您可以在頁面上添加一個頁面控件,以在用戶控制下瀏覽數據頁面。

由於您每次僅返回少量數據,因此這使您的應用程序具有更高的響應速度。 一次性返回500,000條記錄也很可能導致連接速度慢的人超時。

我還建議您考慮過濾數據,以便僅返回用戶感興趣的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM