我想從使用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