【发布时间】:2010-11-12 13:58:40
【问题描述】:
我们使用 FileStreamResult 向基于 Silverlight MediaElement 的视频播放器提供视频数据:
public ActionResult Preview(Guid id) {
return new FileStreamResult(
Services.AssetStore.GetStream(id, ContentType.Preview),
"application/octet-stream");
}
很遗憾,Silverlight 视频播放器会在开始播放之前下载整个视频文件。由于我们的Preview Action 不支持下载部分内容,因此这是正常现象。
(旁注:如果文件托管在 IIS 虚拟目录中,我们可以在视频仍在下载时从视频的任何位置开始播放。但是出于安全和审核原因,我们无法提供直接下载链接。所以这不是一个选项。)
我们如何改进 Controller Action 以支持部分 HTTP 内容?
我假设我们首先必须通知客户端我们支持它(向 HEAD 请求添加“Accept-Ranges:bytes”标头),然后我们必须评估 HTTP“Range”标头并流式传输请求的文件范围响应代码为 206。这是否适用于托管在 IIS6 上的 ASP.NET MVC?是否已经有一些代码可用?
另见:
【问题讨论】:
标签: asp.net-mvc http streaming partial