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的服务注册阶段):
单个接口配置(直接加在Action方法上):builder.Services.Configure<Microsoft.AspNetCore.Http.Features.FormOptions>(options => { // 按需设置单文件最大大小,示例为100MB options.MultipartBodyLengthLimit = 100 * 1024 * 1024; options.ValueLengthLimit = int.MaxValue; options.MultipartHeadersLengthLimit = int.MaxValue; });[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.sheetMIME类型。
内容的提问来源于stack exchange,提问作者Rye
相关产品推荐
相关产品推荐

