首页 > 解决方案 > Azure 函数(进程外) HTTP 触发 Post 请求 数据限制

问题描述

这是 Azure 功能 4x 的问题(进程外)

我正在尝试使用 HTTP 触发器将超过 4 MB(4096 字节)的数据发布到 Azure 函数。

它正在超时。以下是我在 Azure 函数中的代码

[Function("HttpTriggerCSharp")]
        public async Task<HttpResponseData> HttpTriggerCSharp(
                [HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequestData req,

                FunctionContext executionContext)
        {
            
            HttpResponseData response = HttpResponseData.CreateResponse(req);

            string requestBody = String.Empty;
            using (StreamReader streamReader = new StreamReader(req.Body))
            {
                requestBody = await streamReader.ReadToEndAsync();
            }

            return response;

        }

我使用 Postman 作为客户端,配置如下:

邮递员配置

4 MB的测试文件

我检查了微软文档https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-http-webhook-trigger?tabs=csharp

它指的是 100 MB 的限制。请让我知道,我在做什么错误?

上述功能适用于进程中的 Azure 函数 (3x)。

标签: azure-functionsserverless

解决方案


Azure Function v4 处于预览模式不完全支持和批准用于生产用途。此外,它仅支持最新版本的 .NET、Javascript 和 Java。检查此语言支持以获取更多信息。

我们无法直接从 Azure Function 3.x 迁移到 4.x,因为可能需要更改其他应用设置和函数代码。

检查此以获取更多信息How to target Azure Functions 运行时版本

要解决此问题,请尝试将函数应用从 3.x 迁移到 4.x。要将功能从 3.x 迁移到 4.x,请执行以下两个步骤:

  1. 使用以下 Azure CLI 命令将FUNCTIONS_EXTENSION_VERSION应用程序设置设置为:~4

    az functionapp config appsettings set --settings FUNCTIONS_EXTENSION_VERSION=~4 -n <APP_NAME> -g <RESOURCE_GROUP_NAME>
    
  2. 对于 Windows 函数应用,运行时需要使用以下 Azure CLI 命令启用 .NET 6.0:

    az functionapp config set --net-framework-version v6.0 -n <APP_NAME> -g <RESOURCE_GROUP_NAME>
    

请注意,Azure Functions 4.x 强制执行扩展的最低版本要求。而 Azure Functions 4.x 要求Microsoft.NET.Sdk.Functions扩展名至少为4.0.0.

无论函数应用超时设置如何,230 秒都是 HTTP 触发函数响应请求所需的最长时间。如果超过此值,则会出现超时错误。

查看此函数应用超时持续时间文档以获取更多信息。


推荐阅读