Я не могу открыть другие страницы на моем веб-сайте во время загрузки? - PullRequest
2 голосов
/ 27 января 2012

Мой сайт работает на IIS7, и все сценарии написаны на ASP Classic.Я недавно заметил, что при загрузке файла на свой веб-сайт я не могу открыть другие страницы.

Это сценарий: я начинаю загружать видеофайл с помощью веб-формы, когда файл загружается, я пытаюсь открыть другуюстраницу на том же сайте, но она не будет получать и загружать один байт, если загрузка не будет полностью завершена!

Есть мысли?

Ответы [ 2 ]

3 голосов
/ 27 января 2012

Причиной этого является объект Session. Объект Session принадлежит STA (однопотоковая квартира). Когда поступает запрос, принадлежащий определенному сеансу, рабочий поток, обрабатывающий запрос, войдет в квартиру, к которой принадлежит объект сеанса. Однако он может сделать это только , если в этой квартире уже нет другого потока (потому что STA может размещать только один поток за раз).

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

Единственный способ избежать этого - отключить сеансы ASP. Это позволило бы ASP обрабатывать запросы из одного и того же браузера одновременно. Однако серьезным недостатком является то, что у вас больше не будет объекта Session для работы. Вам придется реализовать любое управление сеансами на стороне сервера, включая обработку проблем параллелизма, таких как два запроса, пытающихся получить доступ к любым данным сеанса одновременно.

0 голосов
/ 27 января 2012

Только ваш сайт не открывается или другие сайты тоже?

Если это последнее, купите лучший пакет для вашего интернета.

...