首页 > 编程语言 >[ASP.NET Core] 请求大小限制(转载)

[ASP.NET Core] 请求大小限制(转载)

时间:2023-06-08 19:12:29浏览次数:53  
标签:Core ASP IIS MB int MaxValue limit NET options

请求大小一般在文件上传的时候会用到,当然也防止传过来的参数过大情况。

一、设置请求体的最大值

如果不设置请求体大小默认是 30_000_000 bytes,大约28.6MB,当超出大小时会出现如下错误:

错误:Failed to read the request form. Request body too large. The max request body size is 30000000 bytes.

解决方案:

builder.WebHost.ConfigureKestrel((context, options) =>
{
    //设置最大1G, 这里的单位是byte
    options.Limits.MaxRequestBodySize = 1073741824;
});

如果传参用的不是表单的形式(如文件上传)这样处理是足够了的,如果是则还需要设置表单的最大长度。

二、设置表单的最大值

如果不设置表单长度默认是 134,217,728 bytes,大约128MB,当超出大小时会出现如下错误:

错误:Failed to read the request form. Multipart body length limit 134217728 exceeded.

解决方案:

builder.Services.Configure<FormOptions>(option =>
{
    //设置最大1G, 这里的单位是byte
    option.MultipartBodyLengthLimit = 1073741824;
});

三、IIS下的配置

如果是挂在IIS下,还需如下操作:

  1. 修改C:\Windows\System32\inetsrv\config\schema\IIS_schema.xml中maxAllowedContentLength的大小;
  2. 修改项目web.config配置system.webServer/serverRuntime/maxRequestEntityAllowed的大小;
  3. 修改项目web.config配置system.web/httpRuntime/maxRequestLength的大小;
  4. 重启IIS。

文章转载于:https://www.helloworld.net/p/9291788101

 

 

下面是github的issue,基本上可以解决大部分请求遇到的大小限制问题,可根据自己需要添加相关代码:

https://github.com/dotnet/aspnetcore/issues/20369

1. IIS content length limit

The default request limit (maxAllowedContentLength) is 30,000,000 bytes, which is approximately 28.6MB. Customize the limit in the web.config file:

<system.webServer>
  <security>
    <requestFiltering>
      <!-- Handle requests up to 1 GB -->
      <requestLimits maxAllowedContentLength="1073741824" />
    </requestFiltering>
  </security>
</system.webServer>

Note: Without this application running on IIS would not work.

2. ASP.NET Core Request length limit:

For application running on IIS:

 services.Configure<IISServerOptions>(options =>
 {
      options.MaxRequestBodySize = int.MaxValue;
 });

For application running on Kestrel:

services.Configure<KestrelServerOptions>(options =>
{
     options.Limits.MaxRequestBodySize = int.MaxValue; // if don't set default value is: 30 MB
});

3. Form's MultipartBodyLengthLimit

services.Configure<FormOptions>(x =>
{
     x.ValueLengthLimit = int.MaxValue;
     x.MultipartBodyLengthLimit = int.MaxValue; // if don't set default value is: 128 MB
     x.MultipartHeadersLengthLimit = int.MaxValue;
});
 

Adding all the above options will solve the problem related to the file upload with size more than 30.0 MB.



 

标签:Core,ASP,IIS,MB,int,MaxValue,limit,NET,options
From: https://www.cnblogs.com/riddly/p/17467420.html

相关文章

  • 在MOSS中直接嵌入ASP.NET Page zt
    在MOSSDocumentLibrary中的Page,有BasicPage和WebPartPage两种,前者更多的体现WCM特性,后者则更侧重体现Portal特性。不管是BasicPage还是WebPartPage,都是直接和MOSS本身结合非常密切,都直接采用Site中的MasterPage。如果我们想把一个普通的ASP.NETPage也加到MOSS站点里运行,......
  • .net WebUploader 分片上传
    ​ 以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region 文件上传  可以带参数        [HttpPost("upload")]        publicJsonResultuploadProject(I......
  • Static 单例中 QNetworkAccessManager 的释放问题
    结论:QNetworkAccessManager以Static对象作为父对象时,需要注意在main函数return前释放,否则可能导致Qt框架内部的重复释放引发崩溃。原因:Static对象是在Main函数return后才释放的,此时,已经QApplication已失效 参考https://bugreports.qt.io/browse/QTBUG-82984htt......
  • 如何在.net6webapi中实现自动依赖注入
    IOC/DIIOC(InversionofControl)控制反转:控制反正是一种设计思想,旨在将程序中的控制权从程序员转移到了容器中。容器负责管理对象之间的依赖关系,使得对象不再直接依赖于其他对象,而是通过依赖注入的方式来获取所需的资源。ID(DependencyInjection)依赖注入:他是IOC的具体实现方式之......
  • java 访问ingress https报错javax.net.ssl.SSLHandshakeException: Received fatal al
    一、报错及部署环境Java程序访问测试域名https方法正常,访问生产域名https域名报错,报错如下javax.net.ssl.SSLHandshakeException:Receivedfatalalert:protocol_version测试环境使用KubeSphereingress生产环境使用阿里云ACK服务的ingress配置二、问题原因客户端......
  • .NET Core 实现 Windows 系统 Development、Staging、Production 三种环境的无感部署
    阅读目录〇、前言一、配置文件二、程序读取配置1.配置文件信息读取实现2.关于本机测试三、Windows服务器配置回到顶部〇、前言日常开发中,程序的环境切换是相当频繁的了,如果不同环境中的某些参数不同,那就需要每次编辑之前手动进行修改,比较麻烦,效率低下。本文......
  • .net core 因路径原因导致的JSON解析错误
    因解析json配置文件导致的错误:JsonReaderException:'0xEF'isaninvalidescapablecharacterwithinaJSONstring.Thestringshouldbecorrectlyescaped.LineNumber如何解决?{  "path":"D:\工作资料\技术资料"}改为{   "path":"D:......
  • 跟着源码学IM(十一):一套基于Netty的分布式高可用IM详细设计与实现(有源码)
    本文由will分享,个人博客zhangyaoo.github.io,原题“基于Netty的IM系统设计与实现”,有修订和重新排版。1、引言本文将要分享的是如何从零实现一套基于Netty框架的分布式高可用IM系统,它将支持长连接网关管理、单聊、群聊、聊天记录查询、离线消息存储、消息推送、心跳、分布式唯......
  • .Net:对接微信小程序进行授权操作
    原来的写法,使用node.js  其实就是小程序端访问接口,传来一个code参数,接下来后台拿到code之后可以根据code、appid、secret获取session_key和openid,拿到这两个之后后端的工作基本就结束了,可以参考官网接口迁移之后的写法,使用.Net,代码就怎么简单怎么来///<summary>......
  • Kubernetes 集群管理:Kurator or Kubespray
    摘要:Kubespray和Kurator就是这类开源工具的典型代表。本文将对这两款工具进行比较。本文分享自华为云社区《Kubernetes集群管理:KuratororKubespray-华为云云原生团队》,作者:云容器大未来。随着云计算技术的飞速发展,Kubernetes已经成为了容器编排领域的事实标准。用户可......