Javascript .NETCoreV3.1将大型JSON对象发布到Razor页面处理程序
我有以下JavaScript:Javascript .NETCoreV3.1将大型JSON对象发布到Razor页面处理程序,javascript,ajax,asp.net-core,razor-pages,Javascript,Ajax,Asp.net Core,Razor Pages,我有以下JavaScript: var id=[ “ed4bbe0e-d318-e811-a95f-000d3a11f5ee”, “386c9468-d11b-e811-a95d-000d3a11ec14”, “2913f317-991d-e811-a95d-000d3a11ec14” ]; $.ajax({ 方法:“POST”, url:`/Jobs?handler=CreateJobsInQBO`, 数据类型:“json”, contentType:'application/x-www-fo
var id=[
“ed4bbe0e-d318-e811-a95f-000d3a11f5ee”,
“386c9468-d11b-e811-a95d-000d3a11ec14”,
“2913f317-991d-e811-a95d-000d3a11ec14”
];
$.ajax({
方法:“POST”,
url:`/Jobs?handler=CreateJobsInQBO`,
数据类型:“json”,
contentType:'application/x-www-form-urlencoded;charset=UTF-8',
//contentType:'应用程序/json',
数据:{jobIds:ids}
})
发布到下面的Razor页面处理程序
PostCreateJobsInQBO(IEnumerable jobIds)上的公共异步任务{
结果;
if(jobIds==null | |!jobIds.Any()){
结果=“未提交任何作业。”;
}否则{
结果=等待剂量同步(jobIds);
}
返回新的JsonResult(result);
}
这是毫无疑问的。
问题是,当我的JavaScript数组很大,大约3000个项目时,传入的处理程序参数值将为null。我尝试将ajax contentType设置为application/json,并在发送对象之前在对象上使用json.stringify,但它们似乎没有什么区别。我还尝试在handler函数中的参数上设置[FormBody],但同样无效
我知道我错过了一些简单的东西。我只需要一种方法将一个字符串数组发布到一个处理程序方法中,该处理程序方法大约有5000个条目。最好不要使用application/x-www-form-urlencoded内容类型,因为我认为这是导致大型数组无法工作的原因。ValueCountLimit的默认值是1024。这是允许的表单条目数量限制 如果值计数超过1024,则应在Startup.cs中增加它
services.Configure<FormOptions>(options =>
{
options.ValueCountLimit = int.MaxValue;
});
services.Configure(选项=>
{
options.ValueCountLimit=int.MaxValue;
});
很高兴知道这一点。不幸的是,我的数组只有大约122KB,远远低于30MB的限制。对不起,我的错误:)。它实际上与ValueCountLimit
选项相关。它的默认限制为1024。因此,您需要将其设置为大于3000。