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

ASP.NET Core上传xlsx等文件返回422 Unprocessable Entity如何解决

你遇到的422错误核心原因是[ApiController]特性会自动触发模型验证逻辑,当IFormFile参数绑定失败时就会直接返回422响应,不需要你手动写验证逻辑,你可以先从响应体的错误字段中定位具体失败原因,再对应调整:

  • 确认请求参数匹配:你接口的参数名为file,请求时multipart/form-data的表单字段名必须完全一致,同时确保字段类型设置为文件类型(Postman等测试工具中form-data的key列需要选择File选项,不是默认的Text类型)。
  • 调整文件上传限制配置:ASP.NET Core默认限制单文件上传最大为128MB,超出后会触发绑定失败返回422,你可以根据需要调整配置:
    全局配置(写在Program.cs的服务注册阶段):
    builder.Services.Configure<Microsoft.AspNetCore.Http.Features.FormOptions>(options =>
    {
        // 按需设置单文件最大大小,示例为100MB
        options.MultipartBodyLengthLimit = 100 * 1024 * 1024;
        options.ValueLengthLimit = int.MaxValue;
        options.MultipartHeadersLengthLimit = int.MaxValue;
    });
    
    单个接口配置(直接加在Action方法上):
    [RequestSizeLimit(100 * 1024 * 1024)]
    [RequestFormLimits(MultipartBodyLengthLimit = 100 * 1024 * 1024)]
    [AllowAnonymous]
    [HttpPost("import")]
    public ActionResult ImportFile([FromForm] IFormFile file)
    
  • 适配IIS托管配置:如果你的服务托管在IIS上,还需要修改web.config调整IIS侧的请求大小限制:
    <system.webServer>
      <security>
        <requestFiltering>
          <!-- 单位为字节,示例对应100MB -->
          <requestLimits maxAllowedContentLength="104857600" />
        </requestFiltering>
      </security>
    </system.webServer>
    
  • 排查额外验证规则:如果你项目中全局注册了自定义模型验证过滤器、文件类型/MIME类型校验逻辑,要确认是否允许了.xlsx对应的application/vnd.openxmlformats-officedocument.spreadsheetml.sheet MIME类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:36:04