C# 大量POST请求的问题
我在AJAX请求中遇到了一个bug,这个bug只发生在大型JSON对象中 我使用的是画布上的JSON对象,上面有图形(矩形、线条、自由画等)。当用户完成并希望保存它以备以后使用时,他们会保存它并进行其他业务。当绘图非常大时,我遇到了一个问题,即POST不会命中控制器方法 我已将多个配置设置添加到我的web.config中,包括:C# 大量POST请求的问题,c#,json,ajax,asp.net-mvc,C#,Json,Ajax,Asp.net Mvc,我在AJAX请求中遇到了一个bug,这个bug只发生在大型JSON对象中 我使用的是画布上的JSON对象,上面有图形(矩形、线条、自由画等)。当用户完成并希望保存它以备以后使用时,他们会保存它并进行其他业务。当绘图非常大时,我遇到了一个问题,即POST不会命中控制器方法 我已将多个配置设置添加到我的web.config中,包括: <system.web.extensions> <scripting> <webServices> <
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="86753090" />
</webServices>
</scripting>
</system.web.extensions>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="1073741824" />
</requestFiltering>
</security>
<httpRuntime maxRequestLength="1048576"/>
方法的标题为:
[HttpPost]
public ActionResult SaveSketch(int id, string jsonString)
任何帮助都将不胜感激。
只有500英镑
张贴500(内部服务器错误)发送@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我相信您遇到了这个问题,因为您的参数不正确。您正在从浏览器发送一个对象,但控制器方法需要两个属性 尝试创建一个类:
public class MyClass
{
public int id {get;set;}
public string jsonString {get;set;
}
然后将控制器方法更新为如下所示:
[HttpPost]
public ActionResult SaveSketch(MyClass myClass)
我相信您遇到这个问题是因为您的参数不正确。您正在从浏览器发送一个对象,但控制器方法需要两个属性 尝试创建一个类:
public class MyClass
{
public int id {get;set;}
public string jsonString {get;set;
}
然后将控制器方法更新为如下所示:
[HttpPost]
public ActionResult SaveSketch(MyClass myClass)
因此,问题似乎在于项目没有遵守我在配置文件中设置的maxJsonLength值 可在以下站点找到解决方法:
因此,问题似乎在于项目没有考虑我在配置文件中设置的maxJsonLength值 可在以下站点找到解决方法:
您的浏览器控制台中是否有任何错误?现在有问题了,您应该能够通过检查浏览器中的Ajax请求来获得更好的信息。您应该确切地看到服务器返回给您的内容。使用visual studio断点!500错误意味着您的代码崩溃方法的第一行有一个断点;在它出现之前,它正在崩溃。您的浏览器控制台中是否有任何错误?错误现在是问题所在。您应该能够通过检查浏览器中的Ajax请求来获得更好的信息。您应该确切地看到服务器返回给您的内容。使用visual studio断点!500错误意味着您的代码崩溃方法的第一行有一个断点;它在它之前就被打破了。这绝对是一个更好的方法;我会照样保留的。但不幸的是,这并没有解决问题,我认为您不需要执行data:JSON.stringify({id:$(“#currLevelId”).val(),jsonString:jsonString});您应该能够这样做:data:{id:$(“#currLevelId”).val(),jsonString:jsonString}如果您仍然收到500错误,那么序列化很可能与控制器期望的不匹配。如果在Conrtoller方法的第一行上放置断点,它会被命中吗?不会,但我在global.asax中放置了一个应用程序错误捕获,出现的错误是:“使用JSON JavaScriptSerializer进行序列化或反序列化时出错。字符串的长度超过了maxJsonLength属性上设置的值。”因此,出于某种原因,它不尊重我在.config文件中设置的值;我会照样保留的。但不幸的是,这并没有解决问题,我认为您不需要执行data:JSON.stringify({id:$(“#currLevelId”).val(),jsonString:jsonString});您应该能够这样做:data:{id:$(“#currLevelId”).val(),jsonString:jsonString}如果您仍然收到500错误,那么序列化很可能与控制器期望的不匹配。如果在Conrtoller方法的第一行上放置断点,它会被命中吗?不会,但我在global.asax中放置了一个应用程序错误捕获,出现的错误是:“使用JSON JavaScriptSerializer进行序列化或反序列化时出错。字符串的长度超过了maxJsonLength属性上设置的值。”因此,出于某种原因,它没有考虑我在.config文件中设置的值。