You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rest API或Azure Function中处理200MB级请求Payload?

处理超大Rest请求Payload的解决方案(针对Azure Functions及.NET Core)

一、Azure Functions 突破100MB限制的可行方案

  • 调整函数应用配置:Azure Functions的100MB请求限制并非固定值,可通过修改host.json中的http扩展参数调整上限,最大支持1GB:
    {
      "version": "2.0",
      "extensions": {
        "http": {
          "maxRequestSize": 209715200 // 设置为200MB,单位为字节
        }
      }
    }
    
    注意:调整后要匹配函数应用的内存配置,大Payload会占用更多内存,需避免触发资源耗尽问题。
  • 分段上传+Blob存储中转:如果Payload超过1GB,或担心直接上传的稳定性,建议先通过Blob存储中转:
    1. 客户端将大Payload拆分为若干小分片(比如每片10MB),使用Azure Blob SDK上传为块Blob的分片。
    2. 所有分片上传完成后,调用Azure Functions的API触发合并逻辑,函数直接读取Blob中的完整数据进行处理。
      这种方式完全绕过Functions的请求大小限制,适合超大型Payload场景。

二、.NET Core Rest API 处理超大Payload的配置

如果改用独立的.NET Core API服务,可直接调整Kestrel服务器和接口的请求限制:

  • 在Program.cs中全局配置Kestrel:
    builder.WebHost.ConfigureKestrel(serverOptions =>
    {
        // 设置为200MB,设为null表示无限制
        serverOptions.Limits.MaxRequestBodySize = 209715200;
    });
    
  • 针对单个接口添加特性限制(可选,用于覆盖全局配置):
    [HttpPost]
    [RequestSizeLimit(209715200)]
    public async Task<IActionResult> ProcessLargePayload()
    {
        // 业务处理逻辑
    }
    
    注意:无限制配置需谨慎,要配合限流、超时机制防止服务资源被耗尽。

三、200MB+超大型Payload的替代架构方案

  • Azure API Management + Blob存储组合:借助APIM的分段上传策略,让客户端直接将大文件上传到Blob存储,APIM负责身份验证、分片校验,完成后触发后端处理流程,完全避开服务端的请求大小限制。
  • 消息队列驱动的异步处理:将流程拆分为“上传-入队-异步处理”三步:
    1. 客户端上传大文件到Blob存储,获取Blob的访问URL。
    2. 向Azure Service Bus或Queue Storage发送包含Blob URL的消息。
    3. Azure Functions监听队列消息,读取Blob数据并执行处理逻辑。
      这种模式不仅解决Payload大小问题,还提升了系统的扩展性和容错能力。
  • 专用文件上传服务:直接使用Azure Blob存储的原生分块上传能力,客户端通过SDK完成大文件上传,后端仅接收上传完成的通知,再对Blob中的数据进行解析处理。

内容的提问来源于stack exchange,提问作者user2516240

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 17:53:20