DAu*_*tin 5 c# asp.net-mvc asp.net-core
我有一个控制器操作,如下用于发布表单数据(只是测试绑定 atm,留下的评论让您了解我尝试过的事情):
[HttpPost]
//[RequestFormLimits(BufferBodyLengthLimit = 2097152000)]
//[RequestSizeLimit(209715200)]
public async Task<IActionResult> ProcessF([FromForm] IEnumerable<FBillingPostDTO> bills)
{
return Json("Success");
}
Run Code Online (Sandbox Code Playgroud)
此 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/"
})
Run Code Online (Sandbox Code Playgroud)
数据绑定到 IEnumerable,但前提是提交的集合包含 256 个对象或更少。如果超过此值,绑定将返回包含 0 个条目的 null。
我认为这可能是一个maxAllowedContentLength问题,但填充数据后,似乎是提交的数组中的对象数量导致它返回 null。
在我回到开始并重构它以避免这个限制之前,是否有一个设置控制这个值?长度为 256 的 IEnumerable 似乎有点太巧合了,尤其是当 ContentLength 不会导致问题时(即接受 256 个元素@ 36Kb,但拒绝超过 256 个元素@ 35Kb)
该应用程序是在 IIS Express 上本地运行的 .Net Core 3.1(调试)。
DAu*_*tin 13
我真的需要更多地睁开眼睛,不知何故,我在调试时在调用堆栈中错过了这一点,如下this.Request.Form:
"Form value count limit 1024 exceeded"
它所需要的只是[RequestFormLimits(ValueCountLimit = xxx)]向 Action 方法添加注释:
[HttpPost]
[RequestFormLimits(ValueCountLimit = 10000)]
public async Task<IActionResult> ProcessF([FromForm] List<FBillingPostDTO> bills)
{
return Json("Success");
}
Run Code Online (Sandbox Code Playgroud)
因此 4 个键值对的 256 个对象 = 1024 个值,这是默认允许的最大值。我需要改进我的谷歌搜索,因为这对我来说是新闻哈哈。
| 归档时间: |
|
| 查看次数: |
1299 次 |
| 最近记录: |