asp.net core 3.x 解决文件上传大小限制

发布时间 2023-12-21 20:59:49作者: BloggerSb

如在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>