大型POST请求的问题

本文关键字:问题 请求 POST 大型 | 更新日期: 2023-09-27 18:25:42

我在AJAX请求中遇到了一个错误,这个错误只发生在大型JSON对象中。

我使用的是画布上的JSON对象,上面有图形(矩形、线条、freedraw等)。当用户完成并想保存它以备将来使用时,他们会保存它并进行其他业务。当绘图非常大时,我遇到了一个问题,即POST不会命中控制器方法。

我在web.config中添加了多个配置设置,包括:

<system.web.extensions>
  <scripting>
    <webServices>
      <jsonSerialization maxJsonLength="86753090" />
    </webServices>
  </scripting>
</system.web.extensions>
<security>
  <requestFiltering>
    <requestLimits maxAllowedContentLength="1073741824" />
  </requestFiltering>
</security>
<httpRuntime maxRequestLength="1048576"/>

所有这些都没有解决问题;请求的代码如下。

$('#submitSketch').click(function () {
                var jsonString = JSON.stringify(lc.getSnapshot());
                $.ajax({
                    type: "POST",
                    url: "@Url.Action("SaveSketch")",
                    dataType: "json",
                    contentType: "application/json; charset=utf-8",
                    data: JSON.stringify({ id: $("#currLevelId").val(), jsonString: jsonString })
                })
                .done(function (data) {
                    alert("Saved");
                })
                .fail(function (XMLHttpRequest, textStatus, error) {
                    alert("Unable to save!");
                });
            });

该方法的标题是:

[HttpPost]
public ActionResult SaveSketch(int id, string jsonString)

如有任何帮助,我们将不胜感激。只有500

岗位http://localhost:59394/Job/SaveSketch
500(内部服务器错误)send@jquery-1.9.1.js:8526
jQuery.extend.ajax@jQuery-1.9.1.js:7978
(匿名函数)@70:147
jQuery.event.dispatch@jQuery-1.9.1.js:3074
elemData.handle@jquery-1.9.1.js:2750

大型POST请求的问题

我相信您遇到这个问题是因为您的参数不正确。您正在从浏览器发送一个对象,但Controller方法需要两个属性。

尝试创建一个类:

public class MyClass
{
  public int id {get;set;}
  public string jsonString {get;set;
}

然后更新你的控制器方法,使其看起来像这样:

[HttpPost]
public ActionResult SaveSketch(MyClass myClass)

因此,问题似乎是项目没有遵守我在配置文件中设置的maxJsonLength值。

可在以下网站找到解决方案:
http://forums.asp.net/t/1751116.aspx?How+增加+maxJsonLength+for+JSON+POST+in+MVC3