You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.Net Core Kestrel配置4MB请求限制后GET传2.1MB JSON仍触发限制问题

Kestrel GET请求大体积JSON触发限制问题解决

低于4MB阈值仍触发限制的原因

  • 你设置的MaxRequestLineSize限制的是整个请求行的总长度,除了Query String中的JSON内容,还包含HTTP方法、请求路径、HTTP版本标识,额外占用了部分额度。
  • GET请求携带的JSON会做URL编码,特殊字符、非ASCII字符会被转义为%XX格式,单字符会从1字节膨胀到3字节,2.1MB的原始JSON编码后体积很容易超过4MB阈值。
  • 若你的服务前置了IIS、Nginx等反向代理,代理服务本身默认也有请求行、Query String长度限制,会先于Kestrel拦截请求。
  • 你配置的是Kestrel层面的限制,ASP.NET Core本身还有Query String解析、模型绑定层面的默认限制。

是否存在JSON属性数量限制

存在两类和属性数量相关的限制:

  • 若你将JSON拆分为多个Query参数绑定到模型,ASP.NET Core MVC默认的最大模型绑定集合大小为1024,属性数量超过该值会触发绑定失败。
  • 若你将整个JSON作为单个Query参数取值后反序列化,System.Text.Json默认有64层的嵌套深度限制,.NET 7+版本可显式配置MaxPropertyCount限制属性总数,若你之前调整过该配置也可能触发拦截。

调整方案

1. 调高Kestrel相关阈值,预留编码冗余

将请求行相关限制适当调大,规避URL编码和请求行固有内容的额度占用:

builder.UseKestrel(options => {
    int oneMB = 1048576;
    // 调整到6MB预留冗余
    options.Limits.MaxRequestLineSize = 6 * oneMB;
    options.Limits.MaxRequestBufferSize = 6 * oneMB;
    options.Limits.MaxResponseBufferSize = 4 * oneMB;
    options.Limits.MaxRequestBodySize = 10 * oneMB;
});

2. 调整ASP.NET Core层面限制

如果涉及模型绑定和JSON反序列化,同步调整对应配置:

// 调整MVC模型绑定限制
builder.Services.AddMvc(options =>
{
    // 按需调整集合绑定最大数量,避免属性过多触发限制
    options.MaxModelBindingCollectionSize = 10000;
    // 按需调整JSON嵌套深度上限
    options.MaxModelBindingRecursionDepth = 128;
});

// 调整System.Text.Json序列化配置
builder.Services.Configure<Microsoft.AspNetCore.Mvc.JsonOptions>(options =>
{
    options.JsonSerializerOptions.MaxDepth = 128;
    // .NET 7+ 版本可显式放开属性数量限制
    // options.JsonSerializerOptions.MaxPropertyCount = int.MaxValue;
});

3. 调整前置代理限制(若存在)

  • 若使用IIS托管,需在web.config中添加配置:
    <system.webServer>
      <security>
        <requestFiltering>
          <requestLimits maxUrl="6291456" maxQueryString="6291456" />
        </requestFiltering>
      </security>
    </system.webServer>
    
  • 若使用Nginx反向代理,需在配置中添加:
    http {
        large_client_header_buffers 4 64k;
    }
    

注意:GET请求携带大体积载荷不符合HTTP规范设计,部分代理、CDN、客户端会主动截断过长的请求行,兼容性较差,非特殊场景建议改用POST请求将JSON放入请求体传输。


内容的提问来源于stack exchange,提问作者TheLovelySausage

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:54:07