我们使用一个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请求),那么我们必须评估HTTP“范围”报头,并用响应流所需的文件范围206.代码将与ASP.NET MVC的工作托管在IIS6? 是否已有一些代码可用?
另请参阅:
- http://en.wikipedia.org/wiki/List_of_HTTP_headers
- http://blogs.msdn.com/anilkumargupta/archive/2009/04/29/downloadprogress-downloadprogressoffset-and-bufferprogress-of-the-mediaelement.aspx
- http://benramsey.com/archives/206-partial-content-and-range-requests/