我有一个返回大量对象的方法。当我返回一些物体(10)时,一切都很好。问题是当我尝试返回100个对象时。列表如此之大的原因是因为列表中的对象内部有其他对象,所以我基本上返回了一个树。
无论如何我使用命名管道,这是我正在使用的enpoint的配置:
<netNamedPipeBinding>
<binding name="NetNamedPipeBinding_ISymbolFileParser"
closeTimeout="00:10:00"
openTimeout="00:10:00"
receiveTimeout="00:10:00"
sendTimeout="00:10:00"
transactionFlow="false"
transferMode="Buffered"
transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="2147483647"
maxBufferSize="2147483647"
maxConnections="10"
maxReceivedMessageSize="2147483647"
>
<readerQuotas
maxDepth="32"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="4096"
maxNameTableCharCount="2147483647" />
</binding>
</netNamedPipeBinding>
当我通过results.Take(10).ToArray();
来限制对象的数量时,一切都很有效。当我返回100个对象时,我得到了异常:
我尝试解决问题的方法:
我想借此机会询问我是否应该使用不同的绑定。我听说共享内存是紧张的,但我不知道如何在wcf上使用它。因为我在同一台机器之间进行通信,所以我正在使用命名管道。
答案 0 :(得分:4)
看起来像序列化问题,尝试在endpointBehaviors和serviceBehaviors中增加dataContractSerializer maxItemsInObjectGraph
行为。
同样的问题here