簡體   English   中英

攜帶大數據時WCF套接字超時異常

[英]WCF Socket Timeout Exception while carrying large data

我正在研究Web服務WCF,在分配大數據的情況下,我被指派負責測試Web服務。 因此,通過Entity Object我可以攜帶大約。 16000多個記錄,但是我的代碼拋出異常,例如:

套接字連接已中止。 這可能是由於處理您的消息時出錯,遠程主機超出了接收超時或潛在的網絡資源問題引起的。 本地套接字超時為“ 00:24:59.9989991”。

盡管我將App.Config and Web.Config文件中的Socket Timeout5增加到25 ,但是仍然存在相同的錯誤。 這使我相信必須存在大數據問題。

應用配置

<bindings>  
  <netTcpBinding>  
    <binding name="tcpBinding"  
              maxBufferSize="2147483647"  
              maxReceivedMessageSize="2147483647"  
              maxBufferPoolSize="2147483647"  
             receiveTimeout="00:06:00" sendTimeout="00:06:00" >  
      <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" />  
      <security mode="None" />  
    </binding>  
  </netTcpBinding>  
  <webHttpBinding>  
    <binding name="RESTBinding"  
              maxBufferSize="2147483647"  
              maxReceivedMessageSize="2147483647"  
              maxBufferPoolSize="2147483647"  
             receiveTimeout="00:06:00" sendTimeout="00:06:00" >  
      <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" />  
      <security mode="None" />  
    </binding>  
  </webHttpBinding>  
</bindings>  

CS文件

userObject = client.GetAll().ToList();

而且, GetALL()具有以下定義:

var result = (from user in entity.User select user).ToList();
    return result;

並且,上面的代碼返回16000多個記錄,但是由於該Web服務給出異常。 我已經從網上進行了有關該主題的研發,但是找不到任何有用的答案,有人可以建議我該怎么做。

明智的選擇是將大數據分成較小的程序包。

修改API以“分頁”結果。 換句話說,代替GetALL()公開Get(int start, int end)並讓用戶一次遍歷它們。 您在GetALL代碼GetALL改為:

var result = (from user in entity.User select user).Skip(start).Take(end-start).ToList();
    return result;

對您的用戶來說,這也是一件更好的事情,這樣您就不會因過多的數據而使他們不知所措。

暫無
暫無

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

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