大型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
我相信您遇到这个问题是因为您的参数不正确。您正在从浏览器发送一个对象,但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