[英]WCF Socket Timeout Exception while carrying large data
我正在研究Web服務WCF,在分配大數據的情況下,我被指派負責測試Web服務。 因此,通過Entity Object
我可以攜帶大約。 16000多個記錄,但是我的代碼拋出異常,例如:
套接字連接已中止。 這可能是由於處理您的消息時出錯,遠程主機超出了接收超時或潛在的網絡資源問題引起的。 本地套接字超時為“ 00:24:59.9989991”。
盡管我將App.Config and Web.Config
文件中的Socket Timeout
從5增加到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.