WCF 获取数据超过3800条记录时失败
在测试中发现一个奇怪的问题,通过wcf服务获取数据时,超过3800条记录则报如下错误:
Message = "远程主机强迫关闭了一个现有的连接。"
ErrorCode = 10054
stack trace 如下:
Server stack trace:
在 System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags)
在 System.ServiceModel.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean closing)
服务端节点配置:
<netTcpBinding>
<binding name="TcpSharingBinding"
closeTimeout="00:15:00"
openTimeout="00:15:00"
maxReceivedMessageSize="1655360000"
receiveTimeout="00:15:00"
sendTimeout="00:15:00"
maxConnections="2000" maxBufferSize="655360000">
<readerQuotas maxStringContentLength="655360000" />
<security mode="None">
</security>
</binding>
</netTcpBinding>
客户端绑定配置:
<binding name="NetTcpBinding_IMeasureDimension" closeTimeout="00:05:00"
openTimeout="00:05:00" receiveTimeout="00:10:00" sendTimeout="00:05:00"
transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="524288000"
maxBufferSize="655360000" maxConnections="1000" maxReceivedMessageSize="655360000">
<readerQuotas maxDepth="3200" maxStringContentLength="81920" maxArrayLength="163840"
maxBytesPerRead="40960" maxNameTableCharCount="163840" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="None">
</security>
</binding>
此服务用于交互操作数据库中的一些记录,上传5000条记录没有问题,
在从数据库获取记录时,发现超过3800条则报如上述的异常,每条记录大小小于100个字节。
开始认为是配置文件中对于传输字节的限制导致,后来修改绑定配置如上所示,仍然会出现这个异常。
请各位帮忙看一下,是什么地方出了问题。
[解决办法]
压缩下,要不只取少量数据.
[解决办法]
跟这些配置是不是也有关系???
<readerQuotas maxDepth="3200" maxStringContentLength="81920" maxArrayLength="163840"
maxBytesPerRead="40960" maxNameTableCharCount="163840" />
[解决办法]
http://blog.csdn.net/fangxinggood/archive/2010/11/24/6031072.aspx