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

摘要:
微软官方网站文档详细介绍了如何操作。NET Core 3.1解决了数据大小限制。以下是基于我们自身情况的总结。我们可以部署。IIS上的核心项目或使用Kestrel。首先,添加web。配置配置文件,内容如下:2.使用MaxRequestBodySize通过启动Cs来配置,以增加HTTP请求的最大请求体大小。在以下示例中,将限制设置为50MB:services Configure;2、 Kestrel部署的应用程序用于配置接收数据的大小限制。对于Kestrel管理的应用程序,默认的最大请求文本大小为30000000字节,约28.6MB。超过此限制时,将引发InvalidDataException。

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

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

1、通过web.config配置

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

<system.webServer>
  <security>
    <requestFiltering>
      <requestLimits maxAllowedContentLength="52428800" />
    </requestFiltering>
  </security>
</system.webServer>

2、使用MaxRequestBodySize配置

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

services.Configure<IISServerOptions>(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<Startup>(); 
    });

2、使用MultipartBodyLengthLimit 属性自定义限制

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

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<FormOptions>(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()
{
}

总结,如果使用其中的一种方式不行,就全加上,我就是全加上后才正常的

.Net Core 3.1 解决数据大小限制第1张

免责声明:文章转载自《.Net Core 3.1 解决数据大小限制》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Mac安装protobufORACLE 11G 回滚表空间undo满了处理方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

如何启动iis(Internet 信息服务(IIS)管理器)

Internet 信息服务(IIS)管理器 启动 IIS 管理器1、从“开始”菜单,指向“管理工具”,然后单击“Internet 信息服务 (IIS) 管理器”。 从“运行”对话框启动 IIS 管理器2、从“开始”菜单,单击“运行”。 在“打开”框中,键入 inetmgr,然后单击“确定”。 3、还可以从“计算机管理”窗口访问 IIS。通过这种方式访问 I...

web 项目添加 x86 的dll 引用,模块 DLL c:WINDOWSsystem32inetsrvaspnetcore.dll 未能加载。

最近的项目要添加一个 x86 编译的dll, 首先添加引用,编译,报错: 首先判断是 项目中不能添加 x86 的引用,所以把所有的项目都按照 x86 的方式编译一遍,同时对应IIS 的应用池,也修改为启用32位。  本以为可以顺利显示,但是却报错。报错的是本机开发环境,但是部署到服务器测试却能够正常显示。 根据网上的提示,查看 系统日志里的应用程序...

CentOS7 初始化配置

一、在安装的时候配置网卡名称的参数 1. 选择“Install Centos 7” 2. 按Tab,打开kernel启动选项后,增加 net.ifnames=0 biosdevname=0 二、最小化安装完成之后必备安装软件 # 添加epel源,安装基础软件,设置主机名rpm -ivh http://mirrors.aliyun.com/epel/epe...

字体文件放入CDN服务器中,跨域问题(IIS版)

Font from origin 'http:/XXXX' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource....

记录ASP.NET CORE 3 部署过程

    环境为:window server 2008 IIS6.1  net core 3     首先时安装net.core 运行时。地址为:https://dotnet.microsoft.com/download/dotnet-core/3.0   大家找对应的版本进行下载安装。     IIS中创建网站,配置应用程序池.NET FrameWork...

asp.net core 系列 19 EFCore介绍

一.概述 目前最新的EF Core版本是3.0,最稳定的EF Core版本是2.2。EF Core 的计划与 .NET Core以及 ASP.NET Core 版本同步。EF Core 是一个 .NET Standard库,使用 EF Core 开发面向 .NET Core 的应用。生成 .NET Core 应用需要安装 .NET Core SDK。最后,...