JQuery Ajax - Запуск нескольких запросов к ASP.NET MVC - PullRequest
2 голосов
/ 01 февраля 2011

У меня есть веб-страница в стиле «с вкладками», где после загрузки страницы каждая вкладка запускает Ajax-запрос на их содержимое (используя jQuery). Бэкэндом является ASP.NET MVC, работающий в Visual Studio, поэтому обычный сервер ASP.NET Development Server обслуживает запросы. У меня возникают следующие проблемы:

1) Запросы обрабатываются веб-сервером по одному . Второй запрос не обрабатывается, пока не выполнится первый. Это «ASP.NET Development Server», работающий в однопоточном режиме? Могу ли я сделать его многопоточным (и должен ли я сделать его многопоточным или это откроет мир боли?)

2) Длительные запросы уничтожают последующие запросы. Учитывая, что запросы обрабатываются по одному, хотя я запускаю ajax-запрос сразу, почему некоторые запросы не выполняются даже прийти на веб-сервер? Это происходит после обслуживания длинного запроса. Например:

  • 1-й запрос (маленький запрос) - ответ хорошо
  • 2-й запрос (большой запрос) - ответ занимает минуту или так, но действительно обслужен.
  • 3-й запрос (маленький запрос) - запрос никогда приходит на сервер и JQuery делает не сообщать об ошибке.

Я пытался увеличить время ожидания ajax, но безуспешно.


Обновление: Я обнаружил в своем коде ошибку, которая приводила к путанице в URL-адресе к окончательному запросу, поэтому похоже, что это не имеет никакого отношения к длине запроса и тайм-ауту ajax (краснеет!). По пути я нашел полезный плагин ajaxManager, который отлично подходит для постановки в очередь запросов, если это то, что вам нужно (http://www.protofunc.com/scripts/jquery/ajaxManager/). Также, спасибо за правильное замечание об использовании сервера разработки ASP.NET для тестирования. сильно отличается от IIS.

1 Ответ

4 голосов
/ 01 февраля 2011

Что касается пункта 1, имейте в виду, что если вы используете состояние сеанса, то запросы не будут выполняться одновременно - ASP.NET заблокирует состояние сеанса и будет обрабатывать только каждый запрос, который использует его по одному за раз. (См. Раздел «Параллельные запросы и состояние сеанса» в http://msdn.microsoft.com/en-us/library/ms178581 для получения дополнительной информации.) Попробуйте отключить состояние сеанса (если вы, конечно, не используете его!) И посмотрите, поможет ли это.

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