是的,通过 [FromBody] 接收的 JSON 对象大小是有上限的。这个上限主要受以下几个方面影响:
-
Kestrel 服务器的请求体大小限制
默认情况下,Kestrel 的请求体(Request Body)大小上限为 30MB。如果超过此限制,会返回 413 Payload Too Large 错误。可以通过配置KestrelServerLimits.MaxRequestBodySize来调整。 -
IIS 的请求体大小限制
如果你的应用托管在 IIS 上,IIS 也有自己的请求体大小限制(如maxAllowedContentLength,默认 30MB)。 -
ASP.NET Core 的模型绑定限制
ASP.NET Core 本身没有单独为[FromBody]设置专门的大小限制,但会受到上述服务器设置的影响。 -
自定义限制
你可以在控制器或 Action 上通过[RequestSizeLimit]特性单独设置请求体大小限制,例如:
[RequestSizeLimit(50_000_000)] // 50MB
public IActionResult Post([FromBody] MyModel model) { ... }
总结:
- 默认最大约 30MB(受服务器配置影响)。
- 可以通过服务器或 ASP.NET Core 配置进行调整。
- 超过限制会自动返回错误。
如需调整,请根据你的部署环境修改相应的配置。需要具体配置示例可随时告知。