Загрузка больших файлов в YouTube API (.NET)

Я пытаюсь загрузить видео в API YouTube... Все работает нормально, если размер моего видеофайла ‹ 4 МБ.

Ниже мой код. Я думаю, что проблема связана с длиной запроса?!

Обновление: ошибка, которую я получаю: «Невозможно закрыть поток, пока не будут записаны все байты».

Загрузить код

YouTubeRequestSettings settings = new YouTubeRequestSettings("App NAME", "DeveloperKEY", "UserName", "Password");
        YouTubeRequest request = new YouTubeRequest(settings);

        request.Settings.Timeout = 9999999;

        Video newVideo = new Video();

        newVideo.Title = "Movie size 3 MB";
        newVideo.Tags.Add(new MediaCategory("Autos", YouTubeNameTable.CategorySchema));
        newVideo.Keywords = "cars, funny";
        newVideo.Description = "My description";
        newVideo.YouTubeEntry.Private = false;
        newVideo.Tags.Add(new MediaCategory("mydevtag, anotherdevtag", YouTubeNameTable.DeveloperTagSchema));

        string videoPath = "c:\\1.flv";

        newVideo.YouTubeEntry.MediaSource = new MediaFileSource(videoPath, GetContentType(videoPath));
        Video createdVideo = request.Upload(newVideo);

        litMessage.Text = "Video " + newVideo.Title + " uploaded.";

Web.config

<httpRuntime
    executionTimeout="240"
    maxRequestLength="40960"
    requestLengthDiskThreshold="80"
    useFullyQualifiedRedirectUrl="false"
    minFreeThreads="8"
    minLocalRequestFreeThreads="4"
    appRequestQueueLimit="5000"
    enableKernelOutputCache="true"
    enableVersionHeader="true"
    requireRootedSaveAsPath="true"
    enable="true"
    shutdownTimeout="90"
    delayNotificationTimeout="5"
    waitChangeNotification="0"
    maxWaitChangeNotification="0"
    enableHeaderChecking="true"
    sendCacheControlHeader="true"
    apartmentThreading="false" />

person Taha    schedule 23.02.2011    source источник


Ответы (3)


Я не думаю, что это длина запроса. Насколько я знаю, вы используете это, когда получаете загруженный файл. Мне кажется, что где-то тайм-аут. Увеличьте значение времени ожидания как в коде, так и в части HTTPRuntime Web.Config и посмотрите, работает ли это.

person System Down    schedule 23.02.2011

эта линия

maxRequestLength="4096"

в вашем web.config говорит вашему приложению разрешать загрузку только 4 МБ, просто увеличьте это до любого ограничения, которое вам нужно/нужно.

хотя у меня есть ощущение, что это может быть слишком простым решением, особенно при публикации на сторонних сайтах.

person jonezy    schedule 23.02.2011
comment
Нет, тоже не сработало. На самом деле он установлен на 100 МБ, но забыл упомянуть об этом в вопросе. - person Taha; 24.02.2011

Попробуй это:

settings.Timeout = 10000000;
settings.Maximum = 2000000000;

Веб-запрос завершится ошибкой, если превышено время загрузки или длина содержимого (количество отправленных байтов).

person Akku    schedule 06.07.2011