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

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

作者: 高呼吾名 | 来源:发表于2020-08-24 12:12 被阅读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

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/hmxnjktx.html