我想从使用HttpHandler的ASP.NET Web应用程序将QuickTime视频流式传输到iPhone。当从IIS 5.1(Windows XP)托管Web应用程序时,视频播放器将打开,然后显示错误“服务器未正确配置”。但是,使用IIS 7.5(Windows 7)时,视频播放正常。使用HttpHandler和IIS 5.1在iPhone上播放Quicktime视频
生产环境正在运行IIS 6.0,并且存在相同的问题,尝试通过Mobile Safari在iPhone上播放视频时显示上述错误。
我检查HTTP标头,他们似乎是几乎在两个服务器之间是相同的(除了少数,如服务器头,这显然是不同的),除非他们出现在不同的顺序尽管我怀疑这是造成这个问题的原因。
根据Google Groups上的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);
高于该传输文件中的代码似乎正常和视频文件中的所有桌面浏览器可以正常播放,并从IIS托管时7.5。在使用移动Safari在iPhone上播放视频文件时,只有在IIS 5.1或IIS 6.0上托管ASP.NET Web应用程序的情况下使用上述代码才会显示问题。
有没有其他人经历过这样的事情,并得到我能做些什么来得到这个工作的任何想法?
Accept-Ranges提示帮助我解决了与ASP.NET MVC类似的问题。 – kim3er 2010-02-18 16:08:28