Ситуация: классическое приложение ASP, используя собственный пул приложений. Настройки по умолчанию.
На некоторых машинах IIS7 IIS решает обслуживать только одну страницу за раз. Поэтому, если вы загружаете несколько страниц с сайта, каждый из них должен загружаться последовательно.
например. Если я загружаю http://foo.com/default.asp из одного браузера, а с другого компьютера загружаю http://foo.com/differenturl.asp, первый должен закончить, пока другой не загрузится. Это почти так же, как процесс w3p является однопоточным.
Обратите внимание, что в расширенных настройках IIS есть параметр, называемый MaxProcesses, в котором говорится: "Установите для этого больше 1, чтобы создать веб-сад" (что бы это ни было). Это НЕ решает проблему, потому что это порождает несколько процессов со своим собственным состоянием сеанса и т.д., И когда вы загружаете http://foo.com/default.asp, нет способа гарантировать вас присваивается одному процессу.
Проблема проявилась, потому что у нас есть диагностическая страница, написанная в ASP, которая создает и элемент управления ActiveX, который загружает URL-адрес на веб-сайт и возвращает результаты.
Итак, диагностика .asp загружается и в коде со стороны сервера создается небольшой веб-элемент управления, который загружает (думает об управлении XMLHTTP) default.asp на том же сервере.
Эта страница НИКОГДА не закончит загрузку, потому что сервер ждет завершения страницы diagnostics.asp, прежде чем она будет обслуживать страницу default.asp. Тупик!
Это отлично работает на всех машинах IIS6, и я считаю, что есть некоторые серверы IIS7, где он отлично работает.
Я также подтвердил это не результат нашей причудливой диагностики. Загрузка нескольких вкладок с одного компьютера или даже отдельных машин показывает, что веб-процесс обрабатывает их по одному.
Правильный ответ от AnthonyWJones: отладка серверной стороны была включена в IIS7. Это ставит IIS в однопоточный режим.