WCF - Как увеличить квоту на размер сообщения - PullRequest
438 голосов
/ 19 мая 2009

У меня есть служба WCF, которая возвращает 1000 записей из базы данных клиенту. У меня есть клиент ASP.NET WCF (я добавил ссылку на сервис в проекте веб-приложения asp.net для использования WCF).

При запуске клиентского приложения появляется следующее сообщение:

Максимальная квота размера сообщения для входящих сообщений (65536) была превышены. Чтобы увеличить квоту, используйте свойство MaxReceivedMessageSize на соответствующий обязательный элемент.

Любая помощь? Как увеличить квоту на размер сообщения?

Ответы [ 13 ]

3 голосов
/ 25 июля 2017

Для HTTP:

<bindings>
  <basicHttpBinding>
    <binding name="basicHttp" allowCookies="true"
             maxReceivedMessageSize="20000000" 
             maxBufferSize="20000000"
             maxBufferPoolSize="20000000">
        <readerQuotas maxDepth="200" 
             maxArrayLength="200000000"
             maxBytesPerRead="4096"
             maxStringContentLength="200000000"
             maxNameTableCharCount="16384"/>
    </binding>
  </basicHttpBinding>
</bindings>

Для TCP:

<bindings>
  <netTcpBinding>
    <binding name="tcpBinding"
             maxReceivedMessageSize="20000000"
             maxBufferSize="20000000"
             maxBufferPoolSize="20000000">
      <readerQuotas maxDepth="200"
           maxArrayLength="200000000"
           maxStringContentLength="200000000"
           maxBytesPerRead="4096"
           maxNameTableCharCount="16384"/>
    </binding>
  </netTcpBinding>
</bindings>

ВАЖНО:

Если вы попытаетесь передать сложный объект, который имеет много связанных объектов (например, древовидную структуру данных, список, который содержит много объектов ...), связь не будет установлена ​​независимо от того, как вы увеличили квоты. В таких случаях вы должны увеличить количество содержащихся объектов:

<behaviors>
  <serviceBehaviors>
    <behavior name="NewBehavior">
      ...
      <dataContractSerializer maxItemsInObjectGraph="2147483646"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
3 голосов
/ 26 июля 2013

Не забывайте, что будет рассматриваться app.config точки входа выполнения, а не тот, который в проекте библиотеки классов, управляющий вызовами Web-сервиса, если он есть.

Например, если вы получили ошибку во время выполнения модульного теста, вам нужно настроить соответствующий конфиг в проекте тестирования.

1 голос
/ 22 января 2013

Я получил эту ошибку при использовании этих настроек на web.config

System.ServiceModel.ServiceActivationException

Я установил настройки так:

      <service name="idst.Controllers.wcf.Service_Talks">
    <endpoint address="" behaviorConfiguration="idst.Controllers.wcf.Service_TalksAspNetAjaxBehavior"
      binding="webHttpBinding" contract="idst.Controllers.wcf.Service_Talks" />
  </service>
  <service name="idst.Controllers.wcf.Service_Project">
    <endpoint address="" behaviorConfiguration="idst.Controllers.wcf.Service_ProjectAspNetAjaxBehavior"
      binding="basicHttpBinding" bindingConfiguration="" bindingName="largBasicHttp"
      contract="idst.Controllers.wcf.Service_Project" />
  </service>
</services>

<bindings>
<basicHttpBinding>
    <binding name="largBasicHttp" allowCookies="true"
             maxReceivedMessageSize="20000000"
             maxBufferSize="20000000"
             maxBufferPoolSize="20000000">
        <readerQuotas maxDepth="32"
             maxArrayLength="200000000"
             maxStringContentLength="200000000"/>
    </binding>
</basicHttpBinding>

...