HTML 5视频无法从我的MVC网站播放

rhu*_*hes 5 c# asp.net asp.net-mvc html5 html5-video

我有一个简单的MVC动作,返回FilePathResult指向视频.由于某种原因,HTML5视频(使用js-video.js)不播放视频.如果我将URL更改为我知道有效的URL,则视频播放正常.所以它必须与我提供文件的方式有关.

如果我浏览浏览器中的URL,视频会下载然后播放正常.

视频.mp4的返回MIME类型为video/mp4.

我使用Video Studio 2012,.NET 4,IIS 8 ExpressWindows 7 x64 Home Premium.

这是我各自的代码:

[Authorize(Roles = "File_Read")]
public FileResult Get(int? id)
{
    try
    {
        if (id == null)
            throw new ArgumentNullException("id");

        var fileRepo = FileRepositoryFactory.Repository;

        var file = fileRepo.GetById(id.Value);
        if (file == null)
            throw new InvalidOperationException(String.Format("Failed to find file with id: {0}", id));

        if (String.IsNullOrWhiteSpace(file.FilePath))
        {
            return this.File(file.Data, file.MIMEType, file.FileName);
        }
        else
        {
            return this.File(file.FilePath, file.MIMEType, file.FileName);
        }
    }
    catch (Exception ex)
    {
        return this.File("failed.txt", "text/plain");
    }
}
Run Code Online (Sandbox Code Playgroud)

这是一个Chrome返回的屏幕截图:

网络

文件获取请求

mp4请求失败

mp4请求详细信息失败

tpe*_*zek 6

HTML5标准Video需要支持范围请求.

在静态文件的情况下,此支持由服务器在内部提供,但是在ASP.NET MVC操作的情况下,它需要在ActionResult级别上实现.

文章在ASP.NET MVC范围请求- RangeFileResult详细描述了如何创建ASP.NET MVC ActionResult范围请求支持.还有一个使用VideoJS的示例应用程序:ASP.NET MVC中的VideoJS