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

.NET 5后端接口通过Postman上传文件无限加载不命中Action无报错

.NET 5 文件上传接口无法命中Action问题排查方案

原因1:路由配置不匹配

  • 问题点:Controller未添加[ApiController]特性,或者Controller、Action的路由规则和Postman请求的URL不对应,框架无法找到匹配的Action处理请求,导致请求挂起。
  • 解决方法:
    1. 确保控制器类上已添加[ApiController]和路由特性,示例:
    [ApiController]
    [Route("api/[controller]")]
    public class FileController : ControllerBase
    {
        // 你的UploadFile Action
    }
    
    1. 给UploadFile方法添加明确的路由特性,避免全局路由规则不匹配:将原有[HttpPost]修改为[HttpPost("uploadfile")],此时Postman请求URL应为POST 你的域名/api/file/uploadfile

原因2:Postman请求配置错误

  • 问题点:文件上传需要multipart/form-data类型的请求,若手动设置了错误的Content-Type(如application/json),或者form-data未正确上传文件,框架会持续等待合法的表单数据,出现无限加载。
  • 解决方法:
    1. Postman的Body选项卡选择form-data类型,不需要手动在Headers栏添加Content-Type,Postman会自动生成带boundary的合法请求头
    2. form-data栏添加类型为File的键,上传至少1个文件,避免后续formCollection.Files.First()抛空异常

原因3:表单大小限制或请求流被提前读取

  • 问题点:[DisableRequestSizeLimit]仅解除了请求大小限制,未解除表单默认的MultipartBodyLengthLimit限制;若存在自定义中间件提前读取了Request.Body且未重置流位置,会导致ReadFormAsync()无法正常读取到数据。
  • 解决方法:
    1. 在Startup.cs的ConfigureServices方法中添加表单配置,解除大小限制:
    services.Configure<Microsoft.AspNetCore.Http.Features.FormOptions>(options =>
    {
        options.MultipartBodyLengthLimit = long.MaxValue;
    });
    
    1. 检查自定义中间件逻辑,若有读取Request.Body的操作,读取后调用Request.Body.Seek(0, SeekOrigin.Begin)重置流位置,或者读取前先调用Request.EnableBuffering()开启请求体缓冲。

原因4:跨域配置缺失

  • 问题点:如果Postman请求跨域(比如本地调试的接口域名和Postman模拟的请求源不一致),且服务端未配置跨域策略,预检请求被拦截会导致请求挂起。
  • 解决方法:配置对应跨域策略,允许Postman的请求源访问接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:54:05