通过 [FromBody] 接收的 JSON 对象大小是有上限的

4 阅读1分钟

是的,通过 [FromBody] 接收的 JSON 对象大小是有上限的。这个上限主要受以下几个方面影响:

  1. Kestrel 服务器的请求体大小限制
    默认情况下,Kestrel 的请求体(Request Body)大小上限为 30MB。如果超过此限制,会返回 413 Payload Too Large 错误。可以通过配置 KestrelServerLimits.MaxRequestBodySize 来调整。

  2. IIS 的请求体大小限制
    如果你的应用托管在 IIS 上,IIS 也有自己的请求体大小限制(如 maxAllowedContentLength,默认 30MB)。

  3. ASP.NET Core 的模型绑定限制
    ASP.NET Core 本身没有单独为 [FromBody] 设置专门的大小限制,但会受到上述服务器设置的影响。

  4. 自定义限制
    你可以在控制器或 Action 上通过 [RequestSizeLimit] 特性单独设置请求体大小限制,例如:

[RequestSizeLimit(50_000_000)] // 50MB
public IActionResult Post([FromBody] MyModel model) { ... }

总结:

  • 默认最大约 30MB(受服务器配置影响)。
  • 可以通过服务器或 ASP.NET Core 配置进行调整。
  • 超过限制会自动返回错误。

如需调整,请根据你的部署环境修改相应的配置。需要具体配置示例可随时告知。