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;
});

参考文档:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/models/file-uploads?view=aspnetcore-3.1#server-and-app-configuration

上一篇下一篇

猜你喜欢

热点阅读