【问题标题】:Large POST requests with JSON data are not deserialized in ASP.NET Core 4.6.1带有 JSON 数据的大型 POST 请求在 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 吗?

标签: c# iis asp.net-web-api json.net .net-4.6.1


【解决方案1】:

您可以在 web.config 中更新maxAllowedContentLength

<security>
  <requestFiltering>
    <requestLimits maxAllowedContentLength="52428800" />
  </requestFiltering>
</security>

如果不成功也设置

<system.web>
  <httpRuntime maxRequestLength="65536" />
</system.web>

【讨论】:

    猜你喜欢
    • 2019-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 2020-06-02
    • 1970-01-01
    • 2017-12-03
    相关资源
    最近更新 更多