Я пытаюсь транслировать видео QuickTime на iPhone из веб-приложения ASP.NET, используя HttpHandler. При размещении веб-приложения из IIS 5.1 (Windows XP) открывается видеоплеер, а затем отображается ошибка «Сервер настроен неправильно». Однако при использовании IIS 7.5 (Windows 7) видео воспроизводится нормально.
Производственная среда работает под управлением IIS 6.0 и имеет ту же проблему, когда при попытке воспроизведения видео на iPhone через Mobile Safari отображается ошибка, приведенная выше.
Я проверил заголовки Http, и они кажутся практически одинаковыми между двумя серверами (кроме нескольких, таких как заголовок Server , который, очевидно, будет отличаться), за исключением того, что они появляются в другом порядке, хотя я сомневаюсь, что это вызывает проблему.
Согласно этой теме в Группах Google, добавление заголовка '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 в Windows 7. Проблема проявляется только при попытке воспроизведения видеофайлов на iPhone с помощью Mobile Safari использует приведенный выше код, а веб-приложение ASP.NET размещается на IIS 5.1 или IIS 6.0.
Кто-нибудь еще испытывал что-то подобное и получил какие-либо идеи о том, что я могу сделать, чтобы это работало?