【问题标题】:Posting array of objects to ASP.NET MVC Controller get 403 error将对象数组发布到 ASP.NET MVC 控制器得到 403 错误
【发布时间】: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


    【解决方案1】:

    看来我的问题与 AWS WAF 阻止请求有关。

    要更改的具体规则组在

    AWSManagedRulesCommonRuleSet
    

    我必须重写的规则是

    SizeRestrictions_BODY
    

    【讨论】:

      猜你喜欢
      • 2014-05-28
      • 1970-01-01
      • 1970-01-01
      • 2013-09-26
      • 1970-01-01
      • 2020-04-11
      • 2021-11-07
      • 2017-02-22
      • 1970-01-01
      相关资源
      最近更新 更多