net core api上传下载大文件 413、400错误 IIS服务器
1、背景
上传文件时,如果文件太大(一般指超过30M的文件)会报错,报错原因如下
IIS服务器:限制大文件上传,报413错误码
net core api项目:限制大文件上传,报400错误码
2、首先解决IIS 413错误
定义我们打算上传的字节大小:这里我定义为200M=209715200B
1)打开服务器,选中我们部署的【api项目】--双击【配置编辑】--Section选择(system.webServer/security/requestFiltering),
修改maxAllowedContentLength如图:
成功解决413问题。(这些配置记录在web.config里面)
如果没解决,看 2)
解决了,看 3)
2)一般这样就能解决413问题了,如果没有解决,关注一下:Section选择(system.web/httpRuntime)
修改exectionTimeout=我们预计的时间
修改maxRequestLength=209715200
这样应该能够完全解决。
3)这时候,我们就想到了,以后更新项目,如果web.config不注意被覆盖了,又得重新操作以上操作,这是比较烦人的
若以,这里考虑可以直接在发布项目的时候,将我们的配置添加到web.config中
在api项目添加web.config配置文件,内容为(从上述操作的web.config文件copy出来即可)
<configuration> <system.webServer> <security> <requestFiltering> <requestLimits maxAllowedContentLength="209715200" /> </requestFiltering> </security> </system.webServer> </configuration>
右键属性,复制到输出目录,设置如果较新则复制
这样在生成中会把我们自定义的配置输出到web.config中,就无需在IIS上执行操作
3、然后解决api项目 400错误
1)打开项目,接口添加特性
[RequestFormLimits(MultipartBodyLengthLimit = 209715200)] [HttpPost("Up/{id}")]
成功解决400问题。
2)如果没有解决,在Startup-ConfigureServices添加
services.Configure<IISServerOptions>(options => { options.MaxRequestBodySize = 209715200; });
重新发布
至此,结束!