首页 > 解决方案 > Azure 函数:“超过多部分正文长度限制 16384。”

问题描述

我想将我的 Web 应用程序中的文件上传到 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 Functions 呢?

标签: azure-functions

解决方案


不建议您将文件较大的Form作为httptrigger请求传入,这样很容易导致httptrigger超时。这是一个冒险的设计,

大型、长时间运行的函数可能会导致意外的超时问题。

看看这个:

https://docs.microsoft.com/en-us/azure/azure-functions/functions-best-practices#avoid-long-running-functions

如果可能,函数应该是无状态和幂等的。将任何所需的状态信息与您的数据相关联。例如,正在处理的订单可能有关联的状态成员。函数可以根据该状态处理订单,而函数本身保持无状态。

您可能拥有良好的 Internet 连接,但用户可能没有。如果你需要设计这个应用程序,那么它的工作流程应该是这样的:Web 应用程序 → Azure 存储 → Azure Functions。使用 blobtrigger 然后处理上传到存储的文件。


推荐阅读