Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Отправка таблицы записей с фотографиями превышает квоту

Автор вопроса: user1039134Ответов: 2

Настройки кода

<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<customBinding>
<binding>
<binaryMessageEncoding />
<httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
</binding>
</customBinding>
<basicHttpBinding>
<binding maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="SilverlightApplication2.Web.EpriscriptionSrv">
<endpoint address="" binding="customBinding"
contract="SilverlightApplication2.Web.EpriscriptionSrv" />
<endpoint address="mex" binding="customBinding" contract="IMetadataExchange" />
</service>
</services>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
</system.serviceModel>

Отображаемая справка по ошибке введите здесь описание изображения

Посетите, но не ответил

Wcf-максимум превышена квота на размер входящих сообщений (65536)?

введите здесь описание изображения

wcfwcf-bindingwcf-data-services

Ответы

Ответ 1 · рейтинг 2 · cmcquillan

Ваш файл конфигурации хоста службы не совпадает с конфигурацией вашего клиентского приложения.

На самом деле увеличение maxReceivedMessageSize на самом деле не имеет никакого эффекта при размещении в файле web.config на стороне сервера. Когда ваш сервис добавляется в качестве ссылки в другое приложение. Он сгенерирует конфигурацию клиента, очень похожую на ту, что вы видите на последнем снимке экрана. Однако по умолчанию часто используется размер сообщения, типичный для небольших веб-служб.

Чтобы получать сообщения большего размера, необходимо увеличить атрибут maxReceivedMessageSize в конфигурации на стороне клиента.

Поскольку вы в настоящее время используете тестовый клиент WCF, я приведу пару скриншотов, как это сделать там:

  1. При запуске тестового клиента WCF. Перейдите вниз к "Файлу конфигурации", щелкните правой кнопкой мыши и выберите "Редактировать с помощью SvcConfigEditor".
  2. В новом окне редактора конфигурации: разверните меню "Привязки" и выберите свою привязку. Затем отредактируйте атрибут MaxReceivedMessageSize.
  3. Нажмите Файл -> Сохранить и закройте редактор.
  4. На тестовом клиенте WCF. Теперь должно появиться новое всплывающее окно с сообщением о том, что конфигурация была изменена внешним редактором, и с предложением выполнить перезагрузку. Нажмите "Да", чтобы сделать это.
  5. Меню "Файл конфигурации" в тестовом клиенте WCF теперь должно отражать новые изменения. Теперь выполните тестовый вызов в тестовом клиенте WCF как обычно.

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

Ответ 2 · рейтинг 1 · Tim

Вы также можете попробовать увеличить значения квоты чтения в своей пользовательской привязке.

<bindings>
  <customBinding>
    <binding>
      <binaryMessageEncoding>
        <readerQuotas maxDepth="2147483647"
                      maxStringContentLength="2147483647"
                      maxArrayLength="2147483647"
                      maxBytesPerRead="2147483647"
                      maxNameTableCharCounts="2147483647" />
        </readerQuotas>
        <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
    </binding>
  </customBinding>

Кроме того, вы можете увеличить свойство maxItemsInGraph для DataContractSerializer с помощью поведения:

<behaviors>
  <serviceBehaviors>
    <behavior>
      <serviceMetadata httpGetEnabled="true"
                       httpsGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
      <dataContractSerializer maxItemsInGraph="2147483647" />
    </behavior>
  </serviceBehaviors>
</behaviors>

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы