• .Net Core 3.1 解决数据大小限制


    微软官网文档上对.NET Core3.1解决数据大小限制有详细的介绍。下面是根据自己的情况进行的总结,我们可以把.Core项目部署在IIS上,也可以利用Kestrel进行部署。这两种方式处理数据大小限制的方式不一样,具体如下:

    一、部署在IIS上的应用配置接收数据的大小限制

    1、通过web.config配置

    IIS默认请求限制 (maxAllowedContentLength) 为30000000字节,即约 28.6 MB。 可以添加web.config来自定义配置。首先添加一个web.config配置文件,里面添加的内容如下:

      

        

          "52428800" />

        

      

    2、使用MaxRequestBodySize配置

    通过在StartUp.cs中的设置来增加 HTTP 请求的最大请求正文大小,在下面的示例中,将限制设置为 50 MB (52428800 字节) :

    services.Configure(options =>

    {

        options.MaxRequestBodySize = 52428800;

    });

     

    二、 利用Kestrel部署的应用配置接收数据的大小限制

    对于 Kestrel 托管的应用,默认的最大请求正文大小为 30,000,000 个字节,约为 28.6 MB。下面是处理数据大小限制的方式:

    注意:下面介绍的方式是基于Kestrel服务器上的配置,需要以.net core 的运行程序进行启动时才生效,以iis express 启动仍不生效。另外应用发布后使用nginx或者iis做反向代理服务器,还需要对反向代理服务器进行配置。

    1、 使用 MaxRequestBodySize属性自定义限制

    MaxRequestBodySize获取或设置任何请求正文的最大允许大小(以字节为单位)。设置为null时,最大请求正文大小是无限的。

    public static IHostBuilder CreateHostBuilder(string[] args) =>

        Host.CreateDefaultBuilder(args)

            .ConfigureWebHostDefaults(webBuilder =>

            {

                webBuilder.ConfigureKestrel((context, options) =>

                {

                    options.Limits.MaxRequestBodySize = 52428800; // 限制50M,options.Limits.MaxRequestBodySize=null表示不限制
    }

    ) .UseStartup();
    });

    2、使用Multipa rtBodyLengthLimit 属性自定义限制

    MultipartBodyLengthLimit 设置每个正文的长度限制。 超出此限制时,会引发 InvalidDataException。 默认值为 134,217,728 (128 MB)。可以在 Startup.ConfigureServices 中设置限制

    public void ConfigureServices(IServiceCollection services)

    {

        services.Configure(options =>

        {

            // Set the limit to 2G

            options.MultipartBodyLengthLimit = int.MaxValue;

        });

    }

    3、使用[DisableRequestSizeLimit]或者[RequestSizeLimit]特性在action上做限制

    DisableRequestSizeLimit对大小不做限制,使用如下:

    [HttpPost]

    [DisableRequestSizeLimit]

    public void UploadFont()

    {

    }

    RequestSizeLimit是对大小做自定义设置,使用如下

    [HttpPost]

    [RequestSizeLimit(52428800)]
    public void UploadFont()
    {
    }

  • 相关阅读:
    简记C语言清空输入残留内容
    智安网络|揭秘安全测试和渗透测试的异同点
    广域网加速的作用:企业为什么需要广域网加速?
    LeetCode算法心得——最短且字典序最小的美丽子字符串(枚举的思想)
    y92.第六章 微服务、服务网格及Envoy实战 -- Envoy基础(三)
    Maven之POM介绍
    javaWeb超市订单管理系统
    STM32的CAN
    slamplay:用C++实现的SLAM工具集
    1545. 找出第 N 个二进制字符串中的第 K 位-递归法
  • 原文地址:https://blog.csdn.net/tzweilai/article/details/134241207