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

.NET WebApi部署Azure App Service后上传超2GB文件报错如何解决

Azure App Service 2GB以上文件上传报错解决方法

首先确认你遇到的报错是请求在到达应用代码前被App Service的反向代理层截断导致,以下是按优先级排序的配置步骤:

1. Windows托管计划配置web.config

Azure App Service Windows计划默认通过IIS做反向代理,IIS的请求大小限制优先级高于代码内的控制器属性,需要修改根目录下的web.config文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <!-- 单位为KB,这里设置为10GB,按需调整 -->
    <httpRuntime maxRequestLength="10485760" executionTimeout="3600" />
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <!-- 单位为字节,这里设置为10GB,按需调整,最大值可设为4294967295(4GB),超过4GB建议用分片 -->
        <requestLimits maxAllowedContentLength="10737418240" />
      </requestFiltering>
    </security>
    <!-- 调整HTTP/2最大帧大小,避免HTTP/2协议报错 -->
    <http2 enabled="true" maxFrameSize="16777215" />
  </system.webServer>
</configuration>

2. 调整代码层面的全局请求限制

仅在控制器加[DisableRequestSizeLimit]不足以覆盖全局托管配置,需要在Program.cs中添加以下配置:

// 配置Kestrel请求大小限制
builder.WebHost.ConfigureKestrel(options =>
{
    // 设为null代表无限制,也可指定具体数值,单位为字节
    options.Limits.MaxRequestBodySize = null;
});

// 如果是Windows计划使用IIS托管,还需要添加以下配置
builder.Services.Configure<IISServerOptions>(options =>
{
    options.MaxRequestBodySize = null;
});

3. Linux托管计划额外配置

如果使用的是Linux App Service计划,不需要配置web.config,除了上述代码修改外,还需要在Azure Portal的App Service配置页添加环境变量:

  • 进入配置->应用程序设置
  • 新增键为ASPNETCORE_Kestrel__Limits__MaxRequestBodySize,值设为-1(代表无限制)或你需要的最大字节数
  • 保存后重启应用生效

4. HTTP/2错误临时排查方案

如果修改后仍然出现net::ERR_HTTP2_PROTOCOL_ERROR,可以临时关闭HTTP/2验证问题:

  • 进入App Service配置->通用设置
  • 将HTTP 2.0选项切换为关闭,保存重启后测试上传
  • 确认问题消失后再调整HTTP/2帧大小参数即可

补充建议

即使配置完成后也建议保留分片上传逻辑,将单个分片大小控制在100MB以内,既可以避免单次请求体积过大触发网络链路的其他限制,也支持断点续传提升上传成功率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 16:39:02