在我们接口上传文件时,就会遇到由于文件过大而不能上传,那么就需要去修改默认的大小限制。修改请求体的默认大小,需要根据不同方式的部署去修改不同的配置。比如IIS下部署,request => iis => iisServer => application,这三个地方都需要修改限制;dotnet命令运行:request => kestrel => application。(如果上面还有代理,那么也同样是需要修改默认的大小限制的)
一、web服务器配置,不同web服务器不同的设置
Kestrel,使用dotnet命令运行部署与在linux下直接运行部署时使用
services.Configure<KestrelServerOptions>(options => { options.Limits.MaxRequestBodySize = null;//不做限制 });
MaxRequestBodySize默认是28.6MB(30,000,000 bytes)
IISServer,使用IIS部署和在VS调试的IIS Express时使用
使用IIS Server需要配置两个地方,首先在程序中增加以下配置
services.Configure<IISServerOptions>(options => { options.MaxRequestBodySize = null;//不做限制 });
最后在IIS配置编辑器设置大小限制,我设置的是500M
二、应用程序(application)
services.Configure<FormOptions>(x => { x.ValueLengthLimit = int.MaxValue; x.MultipartBodyLengthLimit = int.MaxValue; x.MultipartHeadersLengthLimit = int.MaxValue; });