Мы используем FileStreamResult для передачи видеоданных в видеопроигрыватель на основе Silverlight MediaElement:
public ActionResult Preview(Guid id) {
return new FileStreamResult(
Services.AssetStore.GetStream(id, ContentType.Preview),
"application/octet-stream");
}
К сожалению, видеопроигрыватель Silverlight загружает весь видеофайл до того, как он начнет воспроизводиться. Такое поведение ожидается, так как наше действие Preview
не поддерживает загрузку частичного содержимого.
(примечание: если файл размещен в виртуальном каталоге IIS, мы можем начать воспроизведение в любом месте видео, пока оно еще загружается. однако по соображениям безопасности и аудита мы не можем предоставить прямую ссылку для скачивания. так что это не опция.)
Как мы можем улучшить действие контроллера для поддержки частичного содержимого HTTP?
Я предполагаю, что сначала мы должны сообщить клиенту, что мы его поддерживаем (добавив заголовок «Accept-Ranges: bytes» к запросу HEAD), затем мы должны оценить заголовок HTTP «Range» и передать запрошенный диапазон файлов с ответом. код 206. Будет ли это работать с ASP.NET MVC, размещенным на IIS6? Есть ли уже какой-то код?
Также см: