У меня есть метод службы WCF, который я реализовал, который передается IEnumerable
[OperationContract]
List<Item> GetItems(DateTime sinceDate, IEnumerable<Guid> idList);
Метод работает, как предполагалось, при передаче IEnumerable размером 1000 или меньше;служба возвращается с ожидаемым ответом.В какой-то момент переданный массив слишком велик (видно из 2000 элементов) и выдается System.ServiceModel.ProtocolException
, "{"The remote server returned an unexpected response: (400) Bad Request."}"
Я не уверен, что определяет ограничение размера массива.Мне известно о разделе привязки readerQuotas, и для maxArrayLength установлено значение по умолчанию 16384. Размеры моего буфера установлены достаточно большими, но я не уверен, почему происходит сбой вызова службы.Есть ли ограничение на basicHttpBinding для размеров массива, передаваемых в?Что нужно изменить в моей конфигурации, чтобы я мог передавать большие массивы?
Вот мой app.config на стороне клиента.Серверная сторона эквивалентна.
<binding name="BasicHttpBinding_IMyService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="20000000" maxBufferPoolSize="524288" maxReceivedMessageSize="20000000"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>