Загрузка больших файлов в YouTube API (.NET) - PullRequest
3 голосов
/ 23 февраля 2011

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

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

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

Код загрузки

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" />

Ответы [ 3 ]

0 голосов
/ 23 февраля 2011

эта строка

maxRequestLength="4096"

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

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

0 голосов
/ 06 июля 2011

Попробуйте:

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

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

0 голосов
/ 23 февраля 2011

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

...