Вам нужно увеличить значение maxArrayLength, потому что ваш возвращенный массив byte [] превышает размер 16348. Максимальное значение, которое вы можете установить для maxArrayLength, снова равно максимальному числу Int32, равному 2147483647. Измените этот параметр, и ваш веб-сервис сможет передавать большие данные между вашим веб-сервисом и клиентским приложением.
В Web.config создаются ссылки на веб-службы для клиентов.
"Превышена квота максимального размера сообщения для входящих сообщений (65536). Чтобы увеличить квоту, используйте свойство MaxReceivedMessageSize в соответствующем элементе привязки."
установите для максимального значения 2 ^ 31 - 1 или 2147483647 самого большого 32-разрядного числа.
Обратите внимание на TransferMode, который по умолчанию является Buffered.
- Bufferred означает, что сообщения запроса и ответа будут буферизованы.
Другие перечисления для TransferMode:
- Потоковый , что означает, что и запрос, и ответные сообщения будут передаваться в потоковом режиме, или
- StreamedRequest , где запрос будет передаваться в потоковом режиме, пока ответное сообщение буферизовано, или
- StreamedResponse , где сообщение-запрос будет буферизовано, а ответное сообщение - в потоковом режиме.
Для тех, кто не знает, Буферизованный означает, что передача будет держать все сообщение в буфере памяти все, пока передача не будет завершена. Потоковый означает, что буферизуются только заголовки сообщений, а тело сообщения будет представлено в виде потока.
Измените значение maxReceivedMessageSize с 65536 на 2147483647 - если вы оставите параметр TransferMode = "Buffered", мы можем получить еще одну ошибку:
Для TransferMode.Buffered значения MaxReceivedMessageSize и MaxBufferSize должны совпадать. Имя параметра: bindingElement
Оба атрибута требуют одинакового значения, MaxReceivedMessageSize больше, чем MaxBufferSize, если все сообщение буферизовано.
У вас есть два варианта:
a) Измените размер MaxBufferSize на 2147483647.
б) Сделайте TransferMode для: Streamed, StreamedRequest или StreamedResponse.
"Решение использовать буферизованные или потоковые передачи является локальным решением конечной точки для транспортных протоколов HTTP. Для транспортных протоколов HTTP режим передачи не распространяется через соединение или на прокси-серверы или других посредников. Настройка режима передачи не отражено в описании договора на обслуживание. После создания прокси для службы вы можете (это разрешено, но не обязательно) редактировать файл конфигурации для служб, предназначенных для использования с потоковыми передачами, для установки режима передачи. Для TCP и для именованных конвейеров, режим передачи распространяется как утверждение политики ".
http://msdn.microsoft.com/en-us/library/system.servicemodel.transfermode.aspx