Какой лучший способ для потоковой передачи файлов с использованием ASP.NET?
Для этого существуют различные методы, и в настоящее время я использую метод Response.TransmitFile () внутри обработчика http, который напрямую отправляет файл в браузер. Это используется для различных целей, в том числе для отправки FLV-файлов извне рута на встроенный Flash-видеоплеер.
Однако это не похоже на надежный метод. В частности, существует странная проблема с Internet Explorer (7) , когда браузер просто зависает после просмотра видео или двух. Нажатие на любые ссылки и т. Д. Не дает никакого эффекта, и единственный способ восстановить работу сайта - закрыть браузер и снова открыть его.
Это также происходит в других браузерах, но гораздо реже. Основываясь на некотором базовом тестировании, я подозреваю, что это как-то связано со способом потоковой передачи файлов ... возможно, соединение не закрывается должным образом или что-то в этом роде.
Попробовав несколько разных вещей, я обнаружил, что у меня работает следующий метод:
Response.WriteFile(path);
Response.Flush();
Response.Close();
Response.End();
Это решает проблему, упомянутую выше, и просмотр видео больше не приводит к зависанию Internet Explorer.
Однако, насколько я понимаю, Response.WriteFile () сначала загружает файл в память, и, учитывая, что некоторые потоковые файлы могут быть довольно большими, это не кажется идеальным решением.
Мне интересно услышать, как другие разработчики транслируют большие файлы в ASP.NET и, в частности, потоковые видеофайлы FLV.