Сбой wsDualHttpBinding с большими наборами данных - PullRequest
0 голосов
/ 15 октября 2010

Я использую wsDualBinding в своем сервисе wcf для обработки двухсторонней связи в моем программном обеспечении.Кажется, все работает нормально, кроме случаев, когда я вызываю метод для получения списка клиентов.Если в сервисе я ограничу результаты запроса 2730 записями, я смогу получить результаты примерно через 1-2 секунды и отобразить их в таблице данных.Если я ограничу результаты до 2731 (еще один), я получу следующую ошибку:

http://localhost:8731/Design_Time_Addresses/Dispatch_Studio_Server/DispatchService/ не получил ответ в течение настроенного времени ожидания (00: 00: 59.9990000).Время, отведенное для этой операции, могло быть частью более длительного времени ожидания.Это может быть связано с тем, что служба все еще обрабатывает операцию или службе не удалось отправить ответное сообщение.Пожалуйста, подумайте об увеличении времени ожидания операции (приведя канал / прокси к IContextChannel и установив свойство OperationTimeout) и убедитесь, что служба может подключаться к клиенту.

В своем исследовании я прочитал, что потоковая передача лучшедля больших наборов данных, поэтому я также попытался настроить конечную точку basicHttpBinding, используя потоковую передачу вместо буферизации, и я получаю по существу те же результаты.2730 записей работает нормально, но 2731 запись дает мне следующую ошибку.

Ошибка (невозможно прочитать данные из транспортного соединения: соединение было закрыто.) При передаче данных по каналу HTTP.

Я бы не назвал 2730 записей большим набором данных.Это заставляет меня верить, что есть что-то еще, что вызывает эту проблему.

Вот моя конфигурация клиента:

<system.serviceModel>

Вот моя конфигурация сервера:

<system.serviceModel>

Как вывидно, что я пытался изменить maxMessageReceivedSize и другие параметры для решения этой проблемы, но безрезультатно.

Спасибо за ваше время.

1 Ответ

0 голосов
/ 15 октября 2010

Помимо того, что вам никогда не следует отправлять такой большой объем данных клиенту (я сомневаюсь, что клиент выполнит задачу с полным набором данных), возможно, вы достигли предела MaxSerializedObjectsInGraph.

Попробуйте добавить поведение в ваших конфигурациях, содержащее:

<dataContractSerializer maxItemsInObjectGraph="2147483646" />

Вы также можете рассмотреть возможность возврата меньшего набора результатов с использованием нумерации страниц или фильтрации.

...