Подача видеофайла на iPhone из ASP.NET MVC2

Я пытаюсь передать видеофайлы из ASP.NET MVC клиентам iPhone. Видео отформатировано правильно, и если оно у меня есть в общедоступном веб-каталоге, оно работает нормально.

Основная проблема из того, что я прочитал, заключается в том, что для iPhone требуется, чтобы у вас была готовая для возобновления среда загрузки, которая позволяет вам фильтровать диапазоны байтов через заголовки HTTP. Я предполагаю, что это сделано для того, чтобы пользователи могли пропустить видео вперед.

При обслуживании файлов с помощью MVC эти заголовки не существуют. Я пытался подражать этому, но безуспешно. У нас есть IIS6, и я вообще не могу делать много манипуляций с заголовками. ASP.NET будет жаловаться на меня, говоря: « Эта операция требует интегрированного режима конвейера IIS. »

Обновление не является вариантом, и мне не разрешено перемещать файлы в общедоступный веб-ресурс. Я чувствую себя ограниченным нашей средой, но тем не менее ищу решения.

Вот пример кода того, что я пытаюсь вкратце сделать ...

public ActionResult Mobile(string guid = "x")
{
    guid = Path.GetFileNameWithoutExtension(guid);
    apMedia media = DB.apMedia_GetMediaByFilename(guid);
    string mediaPath = Path.Combine(Transcode.Swap_MobileDirectory, guid + ".m4v");

    if (!Directory.Exists(Transcode.Swap_MobileDirectory)) //Make sure it's there...
        Directory.CreateDirectory(Transcode.Swap_MobileDirectory);

    if(System.IO.File.Exists(mediaPath))
        return base.File(mediaPath, "video/x-m4v");

    return Redirect("~/Error/404");
}

Я знаю, что мне нужно сделать что-то вроде этого, однако я не могу сделать это в .NET MVC. http://dotnetslackers.com/articles/aspnet/Range-Specific-Requests-in-ASP-NET.aspx

Вот пример заголовка HTTP-ответа, который работает:

Date    Mon, 08 Nov 2010 17:02:38 GMT
Server  Apache
Last-Modified   Mon, 08 Nov 2010 17:02:13 GMT
Etag    "14e78b2-295eff-4cd82d15"
Accept-Ranges   bytes
Content-Length  2711295
Content-Range   bytes 0-2711294/2711295
Keep-Alive  timeout=15, max=100
Connection  Keep-Alive
Content-Type    text/plain

А вот пример того, что нет (это из .NET)

Server  ASP.NET Development Server/10.0.0.0
Date    Mon, 08 Nov 2010 18:26:17 GMT
X-AspNet-Version    4.0.30319
X-AspNetMvc-Version 2.0
Content-Range   bytes 0-2711294/2711295
Cache-Control   private
Content-Type    video/x-m4v
Content-Length  2711295
Connection  Close

Есть идеи? Спасибо.

9
задан jocull 8 November 2010 в 20:27
поделиться