• .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()
    {
    }

  • 相关阅读:
    面经-虚拟机-JVM垃圾回收
    【接口测试】Postman(三)-变量与集合
    Linux的进程管理
    暮光壁纸(安卓)
    安防监控系统/视频云存储/监控平台EasyCVR服务器解释器出现变更该如何修改?
    无线振弦采集仪在岩土工程中如何远程监测和远程维护
    Vue----数据绑定
    【Java SE】抽象类和接口
    Arthas的安装使用笔记
    十三届蓝桥杯Java国一与C++国一带你刷题(暑期刷题夏令营开启)
  • 原文地址:https://blog.csdn.net/tzweilai/article/details/134241207