【发布时间】:2020-09-16 19:18:22
【问题描述】:
我正在尝试将对象数组发布到 MVC 控制器,当数组的大小小于 30 条记录时,发布工作正常。但是,当数组大小超过该数字时,它将返回 403 错误。该代码在调试模式下在 VS 2019 中测试时有效,无论数组有多大,但在 IIS 上运行时会出现 403 错误。
我已尝试根据我在此处的搜索对环境进行以下更改,但无济于事:
<add key="aspnet:MaxJsonDeserializerMembers" value="50000" /> // changed to even higher number like 150000
<httpRuntime maxRequestLength="40960" targetFramework="4.5" requestValidationMode="2.0" />
<requestLimits maxAllowedContentLength="10485760" /> // changed to even higher number like 50000000
这里是jquery post方法:
var progress = $.connection.progressHub;
progress.client.addProgress = function (message, percentage) {
UpdateProgress(message, percentage);
};
var params = '';
var grid = $("#Grid").data("kendoGrid");
var cnt = grid.dataSource.data().length;
for (var i = 0; i < cnt; i++) {
var model = grid.dataItem("tbody tr:eq(" + i + ")");
params += "&models[" + i + "].ItemId=" + model.ItemId;
params += "&models[" + i + "].ItemNo=" + model.ItemNo;
params += "&models[" + i + "].Price=" + model.Price;
params += "&models[" + i + "].SalesPrice=" + model.SalesPrice;
params += "&models[" + i + "].Qty=" + model.Qty;
params += "&models[" + i + "].CreatedDate=" + model.CreatedDate;
params += "&models[" + i + "].Amount=" + model.Amount;
params += "&models[" + i + "].OrderId=" + model.OrderId;
}
if (params != '') {
$.connection.hub.start().done(function () {
$.post('@(Url.Action("SomeFunction", "Controller", new { area = "Sales" }))', params, function (result) {
Messager.Success('Success');
window.location.reload();
});
});
}
这里是控制器:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SomeFunction([DataSourceRequest] DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<OrderitemViewModel> viewModel)
{
var cnt = 0;
var totalCount = viewModel.Count();
if (viewModel != null)
{
foreach (var master in viewModel)
{
_svc.DetailFunction(request, master);
ProgressHub.SendProgress("Sync in progress...", ++cnt, totalCount);
}
}
return Json("success", JsonRequestBehavior.AllowGet);
}
任何帮助将不胜感激。
【问题讨论】:
标签: c# jquery asp.net-mvc