如何修复413 Payload Too Large错误?Angular+Net Core5本地调试
解决Angular + .NET Core 5大文件上传413 Payload Too Large问题
只配置FormOptions不足以解决大文件上传的413错误,你需要从以下几个维度逐一排查配置:
配置Kestrel服务器请求限制
.NET Core 5的Kestrel服务器默认有请求大小上限,需要显式修改。在Startup.cs的ConfigureServices方法中添加:services.Configure<KestrelServerOptions>(options => { options.Limits.MaxRequestBodySize = long.MaxValue; // 可设置具体数值,如1073741824表示1GB });给上传接口添加请求大小限制特性
在处理文件上传的控制器或Action上,添加[RequestSizeLimit]或[DisableRequestSizeLimit]特性,确保接口层面放开限制:[ApiController] [Route("api/upload")] public class UploadController : ControllerBase { [HttpPost] [RequestSizeLimit(long.MaxValue)] public async Task<IActionResult> UploadFile() { // 你的文件上传逻辑 } }检查Angular端上传逻辑
确保前端用FormData正确构造请求,且HttpClient没有被拦截器限制大小:uploadFile(file: File): Observable<any> { const formData = new FormData(); formData.append('file', file); return this.http.post('/api/upload', formData); }本地IIS Express调试的额外配置
如果后端用IIS Express启动,还需要修改IIS的请求限制配置:
找到项目的applicationhost.config文件(通常在.vs\config目录或%USERPROFILE%\Documents\IISExpress\config下),找到对应站点的配置节点,添加或修改:<security> <requestFiltering> <requestLimits maxAllowedContentLength="1073741824" /> <!-- 1GB,单位为字节 --> </requestFiltering> </security>
内容的提问来源于stack exchange,提问作者Andrea Palermo
相关产品推荐
相关产品推荐

