2009-11-12 3 views
1

Я знаю, что этот вопрос задан много раз, но моя проблема немного отличается.Статус блокировки фоновой обработки ASP.NET

У меня есть страница, которая позволяет пользователю загружать и выгружать файл excel. Во время загрузки excel для создания файла требуется около 2 минут. Я добавил контрольные точки, которые обновляют базу данных со статусом вроде (начальная обработка, работа с заголовком ... и т. Д.). Я сделал то же самое для загрузки.

У меня также есть запрос ajax, который проверяет базу данных с фиксированным интервалом и печатает статус пользователю, чтобы давать обратную связь (начальная обработка, работа с заголовком ... и т. Д.).

Проблема в том, что я получаю обратную связь только после завершения процесса. Похоже, что сеанс заблокирован во время фонового процесса, и любой другой запрос (ajax) завершается только после завершения фонового процесса. ajax составляет около 10 запросов с интервалом в 4 секунды. Я получаю ответ 10 только в конце.

Я пробовал два фрейма, а также фреймы, один запустил ajax и другие, выполняющие этот процесс, не работает. Я попробовал отдельный браузер (процесс работает в IE, ajax работает в FF), и это работает (так что теперь я работаю над своим кодом). Может кто-нибудь посоветовать? Спасибо

p.s. Моя среда IIS 6, ASP.NET 3.5 с браузером MVC 1.0 IE6.0

ответ

1

В вашем браузере ограничено количество соединений, которые могут работать одновременно.

Я полагаю, что у IE есть ограничение на 2 соединения. Это означает, что даже если вы используете AJAX-запросы, вы можете одновременно выполнять только два запроса одновременно.

Это, скорее всего, то, почему вы не видите результаты до конца, потому что он обрабатывает другие соединения и не доходит до запроса статуса, пока это уже не сделано. Это также объясняет, почему это работает, когда вы делаете это из разных браузеров, потому что вы не страдаете от того же ограничения соединения.

Вот article, в котором подробно описывается проблема.

+0

Спасибо за ответ, но я тоже пытался это Firefox, и она имеет 15 соединений и даже этот не работает. – surya

+1

@spiderdevil Браузеры не единственные, которые ограничивают это. Он фактически встроен в спецификации HTTP 1.0 и 1.1, поэтому серверы могут также соблюдать спецификации HTTP и их ограничения, которые, как я полагаю, представляют собой 4 одновременных подключения. – Joseph

+0

Я проверил со скрипачом. и я вижу только два подключения, мой процесс и мой запрос ajax добавляются в очередь каждые две секунды. как только мой процесс закончится, все ответы ajax вернутся. Как решить эту проблему. – surya

Смежные вопросы