Azure Функция: «Превышен предел длины тела для нескольких частей 16384». - PullRequest
1 голос
/ 09 апреля 2020

Я хочу загрузить файл из моего веб-приложения в функцию HttpTriggered Azure. У меня есть следующий код:

     [FunctionName("UploadFileToStorage")]
    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Function, "post", Route = "upload")] HttpRequest req
        , ILogger log)
      {            
         var formdata = await req.ReadFormAsync();
      }

Эта строка кода, которая читает данные формы, вызывает следующее исключение: System.IO.InvalidDataException: 'Multipart body length limit 16384 exceeded.'

Я не могу понять, как разрешить загрузку файла большего размера. Я знаю, что для asp. net core вы можете сделать это , но как насчет Azure Функции?

1 Ответ

1 голос
/ 10 апреля 2020

Не рекомендуется передавать форму с большим файлом в виде запроса httptrigger, который может легко вызвать тайм-аут httptrigger. Это рискованный дизайн,

Большие длительные функции могут вызывать непредвиденные проблемы с тайм-аутом.

Посмотрите на это:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-best-practices#avoid -длительные-функции-функции

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

Возможно, у вас хорошее соединение с Inte rnet, но пользователи могут и не иметь. Если вам нужно спроектировать это приложение, его рабочий процесс должен выглядеть следующим образом: Веб-приложение → Azure Хранилище → Azure Функции. Используйте blobtrigger, а затем обработайте файлы, загруженные в хранилище.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...