Максимальная длина содержимого веб-службы Json? - PullRequest
4 голосов
/ 06 октября 2009

Я создавал веб-сервис Asp.net WCF в формате json. Теперь я хотел по-настоящему проверить, как это работает при отправке большого количества данных. Длина содержимого моего сообщения http составляет 65595. Непосредственно при попытке подключения я получил ошибку «HTTP / 1.1 400 Bad Request». Кажется, что он даже не пытается.

Я знаю, что отправляю действительный json, и отправляю массив из примерно 1000 элементов, и json для каждого элемента выглядит следующим образом: { "Подъязычная": 0, "Я": 1, "мне": 2, "ofooid": 0, "fooid": 1104, "синхронизация": 1, "тип": 1, "идентификатор": 1443,» дата ":" 2009-09-24" }

Если я просто удаляю один из элементов в массиве, так что общая длина содержимого составляет 65484, он работает отлично. Так что кажется, что где-то там магический предел. Является ли Asp.net ограничить размер запроса, и как я могу изменить максимальный размер, если это так?

Мой файл Web.Config выглядит так, и я думаю, что я должен установить здесь максимальное значение, но я просто не знаю, где:

<system.serviceModel>
    <behaviors>
       <endpointBehaviors>
           <behavior name="ServiceAspNetAjaxBehavior">
                <enableWebScript  />
           </behavior>
       </endpointBehaviors>
       <serviceBehaviors>
           <behavior name="ServiceBehavior">
                <serviceDebug includeExceptionDetailInFaults="true" />
           </behavior>
       </serviceBehaviors>
    </behaviors>
    <services>
        <service behaviorConfiguration="ServiceBehavior" name="Service">
            <endpoint address="" behaviorConfiguration="ServiceAspNetAjaxBehavior" binding="webHttpBinding" contract="Service" />
        </service>
    </services>
</system.serviceModel>

Ответы [ 2 ]

4 голосов
/ 06 октября 2009

Вам необходимо увеличить maxReceivedMessageSize в конфигурации привязки для WebHttpBinding. Значение по умолчанию - 65536. Для получения всей информации см. Документацию конфигурации WebHttpBinding .

Также обратите внимание, что вам может потребоваться увеличить ASP.NET maxRequestLength через конфигурацию httpRuntime. По умолчанию 4 МБ, но вам может потребоваться увеличить:

<httpRuntime maxRequestLength="10000" />
3 голосов
/ 16 сентября 2013

Что касается увеличения размера запроса, упомянутый выше ответ является правильным, но если вы хотите увеличить размер ответа json, вы можете сделать это, внеся изменения в endpointBehaviors, как указано ниже.

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

Предполагая конечную точку, как это:

<endpoint address="" binding="webHttpBinding" contract="WcfService1.IService1" behaviorConfiguration="ClientBehavior">
For Client
        <endpointBehaviors>
          <behavior name="ClientBehavior">
            <dataContractSerializer maxItemsInObjectGraph="10000000"/>
          </behavior>
        </endpointBehaviors>

For Server
      <serviceBehaviors>
        <behavior name="HostBehavior">
          <dataContractSerializer maxItemsInObjectGraph="10000000"/>
        </behavior>
      <serviceBehaviors>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...