Тайм-аут запроса Umbraco Azure через Ajax - PullRequest
0 голосов
/ 17 июня 2020

У меня есть сценарий, который создает запись на странице «Медиа» в Umbraco. Идея в том, что я загружаю видео на сервер через FTP. Теперь у меня есть кнопка, которую я нажимаю, где, в свою очередь, вызывается API. Этот API запустит сценарий, который программно создаст запись мультимедиа после ее создания и удалит этот файл. Используя этот метод, я могу создавать медиа в Umbraco даже с большими файлами. Теперь у меня проблема с тайм-аутом, когда файл действительно большой. Есть ли обходной путь для этого? Я использую Azure Web App Service для своего приложения. Как решить эту проблему с тайм-аутом?

Ниже мой код

string[] filePaths = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory + "uploads");

foreach (string filePath in filePaths)
{

    using (Stream stream = System.IO.File.OpenRead(filePath))
    {
        string filename = Path.GetFileName(filePath);
        string mediaType = Constants.Conventions.MediaTypes.File;
        string ext = Path.GetExtension(filename);

        if (ext == ".jpg" || ext== ".png" || ext == ".gif" || ext == ".jpeg") {
            mediaType = Constants.Conventions.MediaTypes.Image;
        }

        IMedia media = Services.MediaService.CreateMedia(filename, Constants.System.Root, mediaType);
        media.SetValue("umbracoFile", filename, stream);
        Services.MediaService.Save(media);
        media = null;
    }

    System.IO.File.Delete(filePath);
}

1 Ответ

1 голос
/ 18 июня 2020

Если вы используете azure, я бы настроил Umbraco для использования blobstorage , тогда выгрузка может быть выполнена в blobstorage вместо экземпляра приложения локали. Azure веб-экземпляры со временем ограничивают использование памяти. Так что загрузка больших файлов в ваше azure веб-приложение в любом случае может быть плохой идеей.

Второе и простое решение, если это происходит только один раз: загрузите небольшой файл в umbraco, а затем перезапишите файл на диске с помощью FTP .

Третье решение: подумайте о таких сервисах, как youtube или vimeo, поскольку они обрабатывают всю кодировку для всех различных браузеров и разных пропускных способностей.

Если вы рассматриваете возможность загрузки больших файлов в свой web.config. Не изменяйте maxAllowedContentLength, не подумав дважды, так как это увеличит потенциальные DoS-атаки. Если это действительно единственное решение, разрешите это только на необходимых путях (например, в вашей папке / umbraco /)

...