Я пытаюсь передать около 7000-8000 объектов, которые не являются большими (только 9 свойств на экземпляр объекта).Кто-нибудь знает, почему, когда я начинаю получать более 5000 или около того объектов, что я получаю ошибки подключения?Он отлично работает, пока не достигнет некоторого порогового значения для размера данных.
Я раскрываю извлечение этих объектов через привязку службы WCF TCP.У меня есть следующий пример конфигурации:
<bindings>
<netTcpBinding>
<binding name="NetTcpBindingConfig"
openTimeout="00:01:00"
sendTimeout="00:05:00"
closeTimeout="00:01:00"
maxBufferPoolSize="2147483647"
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
<security>
<transport/>
</security>
</binding>
</netTcpBinding>
</bindings>
<services>
<service behaviorConfiguration="ServiceBehavior"
name="TestService">
<endpoint address=""
binding="netTcpBinding"
bindingConfiguration="NetTcpBindingConfig"
contract="ServiceInterfaces.ITestService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex"
binding="mexTcpBinding"
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8526/TestService" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="Services.ServiceBehavior">
<serviceMetadata httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
Из моего кода .NET я вызываю службу, используя ChannelFactory со следующим примером кода:
using (ChannelFactory<ITestervice> channel = new ChannelFactory<ITestService>(BindingConfig, "net.tcp://localhost:8526/TestService"))
{
ITestService testService = channel.CreateChannel();
toReturn = testService.LoadAll();
channel.Close();
}
Объект BindingConfig является свойством NetTcpBindingв моем коде, который заполняется как «новый NetTcpBinding (« NetTcpBindingConfig »)».Моя клиентская привязка точно такая же, как моя привязка службы WCF TCP.
Может ли кто-нибудь подсказать, как я могу получить все данные (кажется, мой максимальный лимит составляет ~ 5000 объектов с моей текущей настройкой)?Буду признателен за любую оказанную помощь.Спасибо.
РЕДАКТИРОВАТЬ: В случае, если кто-то сталкивается с этим, см. Принятое решение о MaxItemsInObjectGraph.Однако, если вы используете ChannelFactory из Клиента для использования ваших услуг, см. Следующий код, чтобы заставить его работать:
foreach (OperationDescription operation in channel.Endpoint.Contract.Operations)
{
DataContractSerializerOperationBehavior dataContractBehavior = operation.Behaviors[typeof(DataContractSerializerOperationBehavior)] as DataContractSerializerOperationBehavior;
if (dataContractBehavior != null)
dataContractBehavior.MaxItemsInObjectGraph = int.MaxValue;
}