Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC中的范围请求-无法使用Google浏览器和Opera播放_Asp.net Mvc_Lib.web.mvc - Fatal编程技术网

Asp.net mvc ASP.NET MVC中的范围请求-无法使用Google浏览器和Opera播放

Asp.net mvc ASP.NET MVC中的范围请求-无法使用Google浏览器和Opera播放,asp.net-mvc,lib.web.mvc,Asp.net Mvc,Lib.web.mvc,我正在使用这个库,我正在使用这个插件来播放视频 请遵循以下代码: 控制器: [HttpGet] public ActionResult StreamUploadedVideo() { byte[] test = null; using (var ctx = new Entities()) { var result = ctx.Table.Where(x => x.Field == 4).FirstOrDefault();

我正在使用这个库,我正在使用这个插件来播放视频

请遵循以下代码:

控制器:

[HttpGet]
public ActionResult StreamUploadedVideo()
{            
    byte[] test = null;

    using (var ctx = new Entities())
    {
        var result = ctx.Table.Where(x => x.Field == 4).FirstOrDefault();

        test = result.Movie;

        return new RangeFileContentResult(test, "video/mp4", "Name.mp4", DateTime.Now);
    }
}
<video id="my-video" class="video-js" controls preload="auto" width="640" height="264" poster="MY_VIDEO_POSTER.jpg" data-setup="{}">
    <source src="@Url.Action("StreamUploadedVideo","Controller")" type='video/mp4'>
    <p class="vjs-no-js">
        To view this video please enable JavaScript, and consider upgrading to a web browser that
        <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>
    </p>
</video>
查看:

[HttpGet]
public ActionResult StreamUploadedVideo()
{            
    byte[] test = null;

    using (var ctx = new Entities())
    {
        var result = ctx.Table.Where(x => x.Field == 4).FirstOrDefault();

        test = result.Movie;

        return new RangeFileContentResult(test, "video/mp4", "Name.mp4", DateTime.Now);
    }
}
<video id="my-video" class="video-js" controls preload="auto" width="640" height="264" poster="MY_VIDEO_POSTER.jpg" data-setup="{}">
    <source src="@Url.Action("StreamUploadedVideo","Controller")" type='video/mp4'>
    <p class="vjs-no-js">
        To view this video please enable JavaScript, and consider upgrading to a web browser that
        <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a>
    </p>
</video>

若要查看此视频,请启用JavaScript,并考虑升级到Web浏览器

问题:当我更改视频时间(例如:将时间从1:00更改为10:00分钟)时,我会遇到以下问题:

谷歌浏览器:
网络错误导致媒体下载部分失败。

Opera:
由于损坏问题或您的浏览器不支持使用的功能,媒体播放被中止。

图片:

其余的浏览器都很好。谷歌和Opera发布了最新版本,日期为2017年4月7日

  • 微软边缘-正常

  • 火狐-好的

  • Internet Explorer-好的

  • Opera错误

  • 谷歌-错误


有什么解决方案吗?

当您使用
DateTime时,您的代码出现问题。现在
用于
modificationDate
问题,该问题用于生成
ETag
上次修改的
标题。由于Chrome(Chrome和opera背后的引擎)范围请求可以是有条件的(这意味着如果匹配,则它们可以包含
,如果不匹配,则它们可以包含
,如果自
以来进行了修改,如果自
以来未进行修改,则会导致
412预处理失败
,而不是
200 OK
206部分内容
。如果基础内容没有改变,那么应该使用相同的日期,类似这样的日期

[HttpGet]
public ActionResult StreamUploadedVideo()
{
    byte[] test = null;
    DateTime lastModificationDate = DateTime.MinValue;

    using (var ctx = new Entities())
    {
        var result = ctx.Table.Where(x => x.Field == 4).FirstOrDefault();

        test = result.Movie;
        lastModificationDate = result.LastModificationDate;
    }

    return new RangeFileContentResult(test, "video/mp4", "Name.mp4", lastModificationDate);
}

如果你是tpeczekHi tpeczek,asp.net core是否有RangeFileContentResult?@Matheusiranda我在一篇博客文章中回答了你同样的问题。好的,我在你的博客上问了另一个问题,请看。