带有 JSON 数据的大型 POST 请求在 ASP.NET Core 4.6.1 中未反序列化
Posted
技术标签:
【中文标题】带有 JSON 数据的大型 POST 请求在 ASP.NET Core 4.6.1 中未反序列化【英文标题】:Large POST requests with JSON data are not deserialized in ASP.NET Core 4.6.1 【发布时间】:2019-09-17 20:07:54 【问题描述】:我有一个 web api:
[Route("api/MyResource")]
public IHttpActionResult Post([FromBody] MyDTO myResource, int resourceId)
其中 MyDTO 包含很多其他 DTO 数组。
当我发送较小的请求时,一切正常,但是在 MyDTO 的数组中有数千个对象(cca 5 MB)时,myResource 为空。
我也尝试将 myResource 参数的类型更改为object
,但得到了相同的结果。较小的请求被反序列化为JObject
,大的被反序列化为空。我在输出窗口中没有异常或错误 http 响应。
我正在 IIS-Express 中调试应用程序。
为什么我会得到 null 以及如何解决它?
【问题讨论】:
您似乎对允许的最大请求大小有限制,如果存在,请尝试查看 web.config。 能否检查ModelState
对象中的异常项,看看有没有异常?如果有,它们是什么?
Liero,您尝试设置 maxAllowedContentLength 吗?
【参考方案1】:
您可以在 web.config 中更新maxAllowedContentLength
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="52428800" />
</requestFiltering>
</security>
如果不成功也设置
<system.web>
<httpRuntime maxRequestLength="65536" />
</system.web>
【讨论】:
以上是关于带有 JSON 数据的大型 POST 请求在 ASP.NET Core 4.6.1 中未反序列化的主要内容,如果未能解决你的问题,请参考以下文章
在 Laravel 中发送带有 json 对象数据的 post 请求
使用 Volley 发送带有 JSON 数据的 POST 请求