MVC Post 请求 - 最大数量IEnumerable<T> 绑定中的对象数量?

问题描述 投票:0回答:2

我有一个如下的控制器操作用于发布表单数据(只是测试绑定atm,留下的评论让您了解我尝试过的事情):

[HttpPost]
//[RequestFormLimits(BufferBodyLengthLimit = 2097152000)]
//[RequestSizeLimit(209715200)]
public async Task<IActionResult> ProcessF([FromForm] IEnumerable<FBillingPostDTO> bills)
{
    return Json("Success");
}

此 Post Action 通过 AJAX 调用,具有以下内容:

$.ajax({
        url: "@Url.Action("ProcessF","Billing")",
        type: "POST",
        //contentType: "application/json",
        dataType: "json",
        data: { "bills": promiseArray }
    }).done(function () {
        location.href = "/F/Manage/"
    })

数据绑定到 IEnumerable,但前提是提交的集合包含 256 个对象或更少。 如果超过此值,绑定将返回 null,其中包含 0 个条目。

我认为这可能是一个

maxAllowedContentLength
问题,但是填充数据后,似乎是提交数组中的对象数量导致它返回null。

在我回到开始并重构它以避免这个限制之前,是否有一个设置控制这个值? 长度为 256 的 IEnumerable 似乎有点太巧合了,尤其是当 ContentLength 不会导致问题时(即接受 256 个元素@ 36Kb,但拒绝超过 256 个元素@ 35Kb)

该应用程序是在 IIS Express 上本地运行的 .Net Core 3.1(调试)。

c# asp.net-mvc asp.net-core
2个回答
14
投票

我真的需要多睁开眼睛,不知怎的,我在调试时在调用堆栈中错过了这个,在

this.Request.Form
下:

"Form value count limit 1024 exceeded"

所需要做的就是向 Action 方法添加

[RequestFormLimits(ValueCountLimit = xxx)]
注释:

[HttpPost]
[RequestFormLimits(ValueCountLimit = 10000)]
public async Task<IActionResult> ProcessF([FromForm] List<FBillingPostDTO> bills)
    {
        return Json("Success");
    }

因此 4 个键值对的 256 个对象 = 1024 个值,这是默认允许的最大值。 我需要改进我的谷歌搜索,因为这对我来说是新闻哈哈。


0
投票

就我而言,这对我有用。

[RequestFormLimits(ValueCountLimit = 10000)]

我的问题是我正在从表单发布数据,并且我的模型包含一个列表。我遇到一个问题,当我发布列表中超过 71 条记录的数据时,我的模型将返回 null。我尝试了很多方法,但只有这个解决方案对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.