我正在尝试使用 HttpHandler 将 QuickTime 视频从 ASP.NET Web 应用程序流式传输到 iPhone。从 IIS 5.1 (Windows XP) 托管 Web 应用程序时,视频播放器打开,然后显示错误“服务器配置不正确”。但是,在使用 IIS 7.5 (Windows 7) 时,视频可以正常播放。
生产环境正在运行 IIS 6.0 并且有同样的问题,尝试通过 Mobile Safari 在 iPhone 上播放视频会显示上述错误。
我检查了 Http 标头,它们在两台服务器之间似乎几乎相同(除了一些,例如服务器标头,这显然会有所不同),除了它们以不同的顺序出现,尽管我怀疑这导致问题。
根据Google Groups 上的这个帖子,添加 '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 上使用 Mobile Safari 播放视频文件时才明显以上代码与托管在 IIS 5.1 或 IIS 6.0 上的 ASP.NET Web 应用程序。
有没有其他人经历过这样的事情并对我可以做些什么来让它工作有任何想法?