Существует ли ограничение размера ответа WCF WebInvoke? - PullRequest
3 голосов
/ 15 июля 2010

У меня есть веб-служба WCF, определенная следующим образом

[OperationContract]
[WebInvoke(
    Method = "GET",
    ResponseFormat = WebMessageFormat.Json,
    BodyStyle = WebMessageBodyStyle.Bare,
    UriTemplate = "Assets/{assetId}/Reports/{startDate}/{endDate}")]
JQGridDataStore<Report> GetReportsForAssetFilterByDate(string assetId, string startDate, string endDate);

У меня нет проблем с получением ответов, когда мой JQGridDataStore содержит тысячи экземпляров Report. Однако, хранилище данных превышает 10 000 отчетов, в браузере я получаю следующее:

Ошибка 324 (net :: ERR_EMPTY_RESPONSE): неизвестная ошибка.

Я шаг за шагом внедряю службу и вижу, как она проходит без каких-либо исключений. Объект JQGridDataStore полностью создан и заполнен моими 10 000+ экземплярами отчета. Тем не менее, когда я «F10» мимо возврата, браузер показывает пустой ответ. Все это происходит менее чем за секунду, поэтому я не думаю, что у меня истекает время ожидания.

Исходя из этого, я думаю, что есть какой-то тип ограничения размера буфера, с которым я сталкиваюсь. Какие существуют ограничения, и как бы я их настроил?

Ответы [ 2 ]

6 голосов
/ 16 июля 2010

Вы, вероятно, сталкиваетесь с квотой MaxItemsInObjectGraph DataContractJsonSerializer (каждый отдельный объект - если у вас есть пара сложных типов в вашем массиве, 10 000 из них легко достигнут этого предела).Вы можете установить его в конфигурации поведения, например this .

Тем не менее, я бы посоветовал вам изучить метафору подкачки.Никто не хочет ждать, пока все это упадет за один выстрел.:)

3 голосов
/ 16 июля 2010

В вашем клиенте web.config вы можете установить максимальный размер, который может получить ваша служба, установив атрибут maxReceivedMessageSize для вашей привязки:

<bindings>
  <webHttpBinding>
    <binding name="myWebHttpBinding" maxReceivedMessageSize="2000000" maxBufferSize="2000000">
    </binding>
  </webHttpBinding>
</bindings>

Я считаю, что по умолчанию это 65536, поэтому, если ваш ответ больше этого, это может быть вашей проблемой.

Надеюсь, это поможет !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...