Причиной этого является объект Session. Объект Session принадлежит STA (однопотоковая квартира). Когда поступает запрос, принадлежащий определенному сеансу, рабочий поток, обрабатывающий запрос, войдет в квартиру, к которой принадлежит объект сеанса. Однако он может сделать это только , если в этой квартире уже нет другого потока (потому что STA может размещать только один поток за раз).
Итак, ваш браузер начинает загрузку файла, выполняется запрос ASP, связанный с сеансом этого браузера. Рабочий поток, обрабатывающий этот запрос на загрузку, попадает в квартиру, к которой принадлежит объект сеанса. Теперь вы пытаетесь загрузить другую страницу, пока этот другой запрос еще выполняется. Когда приходит этот второй запрос, ASP обнаружит, что не может заставить другой рабочий поток войти в ту же квартиру сеансов, поскольку он уже занят первым запросом. Следовательно, ASP поместит этот второй запрос в очередь, ожидая, пока первый запрос освободит квартиру.
Единственный способ избежать этого - отключить сеансы ASP. Это позволило бы ASP обрабатывать запросы из одного и того же браузера одновременно. Однако серьезным недостатком является то, что у вас больше не будет объекта Session для работы. Вам придется реализовать любое управление сеансами на стороне сервера, включая обработку проблем параллелизма, таких как два запроса, пытающихся получить доступ к любым данным сеанса одновременно.