При загрузке файла все запросы блокируются - PullRequest
1 голос
/ 03 августа 2009

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

Способ получения файла с сервера заключается в том, что у нас есть отдельная страница ASPX, которая получает значение через строку запроса, затем получает поток файла с сервера, затем я добавляю «content- disposition "заголовок к Response, а затем переберите поток файла и прочитайте 2-килобайтные фрагменты в response.outputstream. Затем, когда это сделано, я делаю Response.End.

Смотрите это для быстрого скринкаста по вопросу:

http://www.screencast.com/users/PeloCast/folders/Jing/media/8bb4b1dd-ac66-4f84-a1a3-7fc64cd650c0

кстати, мы находимся в ASP.NET и C # ...

Спасибо !!! Daniel

1 Ответ

0 голосов
/ 03 августа 2009

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

Это не очень хороший обходной путь, но он может помочь, если вы переписали значение ASP.NET_SESSIONID в файл cookie запроса в Application_BeginRequest (в global.asax). Конечно, вам потребуется аутентификация другим способом. Впрочем, я этого не пробовал.

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

Могу я спросить, есть ли причина, по которой вы просто не используете HttpResponse.TransmitFile?

...