我们正在使用FileStreamResult向基于Silverlight MediaElement的视频播放器提供视频数据。
public ActionResult Preview(Guid id) {
return new FileStreamResult(
Services.AssetStore.GetStream(id, ContentType.Preview),
"application/octet-stream");
}
不幸的是,Silverlight视频播放器在开始播放之前会下载整个视频文件。这种行为是因为我们的Preview
操作不支持下载部分内容。
(顺便说一句:如果文件托管在IIS虚拟目录中,我们可以在仍在下载视频时的任何位置开始播放。但出于安全和审计原因,我们不能提供直接下载链接,所以这不是一个选项。)
如何改进控制器操作以支持部分HTTP内容?
我假设我们首先要通知客户端我们支持它(通过向HEAD请求添加“Accept-Ranges:bytes”头),然后我们必须评估HTTP“Range”头并使用206响应代码流传输请求的文件范围。这是否适用于托管在IIS6上的ASP.NET MVC?是否已经有一些可用的代码?
另请参见: