asp.net core 3.x 解决文件上传大小限制
2020-08-24 本文已影响0人
高呼吾名
asp.net core 默认上传限制是30M
如在Kestrel服务器下 可以选择在CreateHostBuilder 方法中统一移除所有上传限制。也可在指定的action上添加[DisableRequestSizeLimit] 属性解除限制。
//第一种在CreateHostBuilder 中添加配置。
public static IHostBuilder CreateHostBuilder(string[] args) {
hostBuilder = Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder => {
webBuilder.UseStartup<Startup>().UseUrls("http://*:9527").UseKestrel(options => {
options.Limits.MaxRequestBodySize = null;
});
});
return hostBuilder;
}
//第二种在action上添加属性解除限制
[DisableRequestSizeLimit]
[HttpPost("[action]")]
public async Task<string> ImportWhiteListExcel(IFormCollection form) {
}
上述两种是基于Kestrel服务器上的配置,如发布后使用nginx或者iis做反向代理服务器,还需要对反向代理服务器进行配置。
另外这种配置方法在vs 中需要以.net core 的运行程序进行启动方可生效,如以iis express 启动仍不生效。
在IIS上配置文件上传上限(在vs 下使用iis express 启动也可生效)
1.在项目工程下创建web.config,设置文件属性【复制到输出目录】为始终复制或较新复制
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<security>
<requestFiltering>
<!-- 1 GB -->
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
</system.webServer>
</configuration>
2.在工程里Startup.ConfigureServices 中设置
services.Configure<IISServerOptions>(options => {
options.MaxRequestBodySize = int.MaxValue;
});