Сервис asmx должен получить более 2000 элементов - PullRequest
3 голосов
/ 09 декабря 2011

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

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <configuration>
    <system.web>
    <compilation batch="false" batchTimeout="6000" maxBatchSize="100000"   maxBatchGeneratedFileSize="100000" />
    <httpHandlers>
      <add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory, System.Web, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=..." />
      <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    </httpHandlers>
    <customErrors mode="On" />
    <globalization fileEncoding="utf-8" />
    <httpRuntime executionTimeout="36000" maxRequestLength="20480" />
    <webServices>
      <protocols>
        <add name="HttpGet" />
        <add name="HttpPost" />
        <remove name="HttpPostLocalhost" />
        <add name="Documentation" />
      </protocols>
     </webServices>
    </system.web>
  </configuration>

1 Ответ

2 голосов
/ 10 декабря 2011

Это распространенная проблема, когда вам нужно вернуть большие данные пользователям, здесь есть несколько соображений:

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

Таким образом

  • Ограничение запрашиваемых данных и их принятие подкачка
  • Создание небольших запросов с ленивой нагрузкой
  • Использование сжатия, например, GZIP
  • Посмотритев Большие данные и потоковая передача
  • Переход на WCF, поскольку веб-сервисы ASMX являются устаревшей технологией
...