.net 6 Ajax POST大数组导致空参数



我已经建立了一个。net 6 MVC应用程序,需要处理一些数据从UI传递的字符串表的形式(实际上JSON对象,但我试图简化尽可能多的我可以缩小它)。

这是我的控制器方法:

[HttpPost]
public JsonResult LoadData( List<string> inputData)
{
var success = db.ProcessData(inputData);
return Json(new
{
Success = success
});
}

这里是我的Javascript调用:

var inputData = [];
$.each(tableData.body, function (index, item) {
inputData.push(JSON.stringify(jQuery.parseJSON(item[0])));
});
var data = {
inputData: inputData
}
$.ajax({
type: "POST",
url: '@Url.Action("LoadData", "myController")',
data: data,
success: function(response) {

},
failure: function(response) {
debugger;
},
error: function(response) {
debugger;
}
});

发生的事情是,只要我的数组不是太大(我已经尝试了几个条目,它的工作),它都工作得很好,但是当我尝试它与真实的数据(内容长度是226601,所以不是那么令人印象深刻),我的控制器中的inputData是空的。没有例外,只是数据为空。

我在使用IISExpress在VS2022中调试它时遇到了这个问题。我试着通过添加网页来设置一些内容大小限制。在我的项目的根配置文件,我也尝试设置MaxRequestBodySize在我的程序。cs,但到目前为止没有任何工作。

有人熟悉这个吗?

编辑:我只是试着做JSON。在传递数组之前对其进行字符串化处理,并将参数类型更改为string而不是List。然后,我能够使用java . parse (inputData)将其解析为数组,所有数据似乎都在那里。你可以发布的数组的大小有限制吗?

您应该尝试将数据作为一个原始对象

[HttpPost]
public JsonResult LoadData( JArray inputData)
{
var data=inputData.ToObject<List<string>>();
}

或者如果可能的话,您可以序列化数组两次并将其作为字符串

发送。
[HttpPost]
public JsonResult LoadData( string inputData)
{
var json = JsonConvert.DeserializeObject<string>(inputData);
}

另一种方法是搜索SO,找到如何将数组大小从1024增加到更多。

最新更新