具有 JSON 数据的大型 POST 请求未在 ASP.NET Core 4.6.1 中反序列化
Large POST requests with JSON data are not deserialized in ASP.NET Core 4.6.1
我有一个网站api:
[Route("api/MyResource")]
public IHttpActionResult Post([FromBody] MyDTO myResource, int resourceId)
其中 MyDTO 包含大量其他 DTO 数组。
当我发送较小的请求时,一切正常,但是在 MyDTO 的数组中有数千个对象(大约 5 MB)时,myResource 为空。
我也尝试将 myResource 参数的类型更改为 object
,但我得到了相同的结果。较小的请求反序列化为 JObject
,较大的请求反序列化为 null。我在输出 window 或错误 http 响应中没有异常。
我正在 IIS-Express 中调试应用程序。
为什么我得到 null 以及如何解决它?
您可以在 web.config
中更新 maxAllowedContentLength
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="52428800" />
</requestFiltering>
</security>
如果不成功还设置
<system.web>
<httpRuntime maxRequestLength="65536" />
</system.web>
我有一个网站api:
[Route("api/MyResource")]
public IHttpActionResult Post([FromBody] MyDTO myResource, int resourceId)
其中 MyDTO 包含大量其他 DTO 数组。
当我发送较小的请求时,一切正常,但是在 MyDTO 的数组中有数千个对象(大约 5 MB)时,myResource 为空。
我也尝试将 myResource 参数的类型更改为 object
,但我得到了相同的结果。较小的请求反序列化为 JObject
,较大的请求反序列化为 null。我在输出 window 或错误 http 响应中没有异常。
我正在 IIS-Express 中调试应用程序。
为什么我得到 null 以及如何解决它?
您可以在 web.config
中更新maxAllowedContentLength
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="52428800" />
</requestFiltering>
</security>
如果不成功还设置
<system.web>
<httpRuntime maxRequestLength="65536" />
</system.web>