我的任务是创建API Azure函数,用于将文件上传到Blob存储容器。文件是base64格式的,通过POST方法传递给函数,函数体内部是json格式的,有更多的参数需要上传。
简单的工作流程是:
1.调用方调用HTTP触发器(异步持久函数)。
1.函数将调度新的业务流程示例。
1.示例将调用Activity Trigger进行上载
但是当我试图上传大于4 Mb的文件时,我得到这个错误:
Exception: System.AggregateException: One or more errors occurred. (Status(StatusCode="ResourceExhausted", Detail="Received message larger than max (5876735 vs. 4194304)"))
[2023-07-10T12:41:01.044Z] ---> Grpc.Core.RpcException: Status(StatusCode="ResourceExhausted", Detail="Received message larger than max (5876735 vs. 4194304)")
[2023-07-10T12:41:01.046Z] at Microsoft.DurableTask.Client.Grpc.GrpcDurableTaskClient.ScheduleNewOrchestrationInstanceAsync(TaskName orchestratorName, Object input, StartOrchestrationOptions options, CancellationToken cancellation)
字符串
更具体地说,这是大文件失败的代码部分:
// Function input comes from the request content.
StartOrchestrationOptions options = new StartOrchestrationOptions {InstanceId = CorreliationId};
instanceId = await client.ScheduleNewOrchestrationInstanceAsync(nameof(UploadFileOrchestrator), requestBody, options);
型
requestBody是json,里面有file,所以是Instance * Input。错误告诉我,Input数据不能大于4Mb。如何绕过此问题并增加maxinputsize?
我找不到任何有关orchestrator输入大小的文档。
1条答案
按热度按时间ojsjcaue1#
我相信这是.NET隔离的持久函数内部使用的默认limit for the gRPC Server。
您可以使用不应该有此限制的进程内模型或使用claim check pattern(持久函数通常也使用)来解决此问题。
另外,open a bug on the GitHub repo可以解决这个问题。