加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 使用HttpHandler和IIS 5.1在iPhone上播放Quicktime视

发布时间:2020-12-16 06:56:35 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试使用HttpHandler从一个ASP.NET Web应用程序将QuickTime视频流式传输到iPhone.从IIS 5.1( Windows XP)托管Web应用程序时,视频播放器将打开,然后显示错误“服务器未正确配置”.但是,使用IIS 7.5(Windows 7)时,视频播放正常. 生产环境正在运行IIS 6.0
我正在尝试使用HttpHandler从一个ASP.NET Web应用程序将QuickTime视频流式传输到iPhone.从IIS 5.1( Windows XP)托管Web应用程序时,视频播放器将打开,然后显示错误“服务器未正确配置”.但是,使用IIS 7.5(Windows 7)时,视频播放正常.

生产环境正在运行IIS 6.0并且存在同样的问题,尝试通过Mobile Safari在iPhone上播放视频会显示上述错误.

我检查了Http Headers,它们在两个服务器之间看起来几乎是相同的(除了一些,比如Server头,显然会有所不同),除了它们以不同的顺序出现,尽管我怀疑这个造成了这个问题.

根据Google网上论坛上的this thread,添加’Accept-Ranges:bytes’标题可能有所帮助,尽管这对我们没有任何影响.我还添加了ETag标题,没有任何运气.

实际负责发送文件的代码如下所示:

Context.Response.Buffer = true;
Context.Response.ContentType = "video/x-m4v";

Context.Response.AppendHeader("Content-Disposition","filename="Video.m4v"");
Context.Response.AppendHeader("Content-Length","23456789");

Context.Response.AppendHeader("Accept-Ranges","bytes");
Context.Response.AppendHeader("ETag",GetETag(path));

Context.Response.TransmitFile(path);

传输文件的上述代码似乎运行正常,视频文件在所有桌面浏览器中以及在Windows 7上从IIS 7.5托管时正确播放.只有在尝试使用Mobile Safari在iPhone上播放视频文件时才会出现此问题.上面的代码,ASP.NET Web应用程序托管在IIS 5.1或IIS 6.0上.

有没有其他人经历过这样的事情,并对我能做些什么来获得这个工作有任何想法?

解决方法

为什么将Response.Buffer设置为true?

除非您还确保服务器支持HTTP范围请求,否则您不能简单地添加“Accept-Ranges”标头.如果客户端播放器要求支持Range请求并且服务器拒绝处理它们,那么请求将被拒绝似乎是合乎逻辑的.

您可以尝试使用Fiddler作为反向代理,并查看IPhone是否发出Range请求.
http://www.fiddler2.com/Fiddler/Help/ReverseProxy.asp

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读