javascript – 字符串超过maxJsonLength且小于250kb

我正在和ajax一起使用一个实体.我希望在使用 JavaScript创建的网格中使用实体框架提供完整的表格.我目前发送的表格少于140行.我的代码工作,如果我在表中只有50行,我得到以下错误

{"Message":"Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property.","StackTrace":"   at System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj,StringBuilder output,SerializationFormat serializationFormat)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj,SerializationFormat serializationFormat)\r\n   at System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj)\r\n   at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context,WebServiceMethodData methodData,IDictionary`2 rawParams)\r\n   at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context,WebServiceMethodData methodData)","ExceptionType":"system.invalidOperationException"}

在我的网络统计中,我的响应正文中的XMLHttpRequest出现500错误,我有错误,如上所示.如果我将行数限制为50,我可以让页面正常工作,我可以在响应正文中看到我的数据.以下代码是将实体数据发送到javascript所需的所有代码.
JavaScript的:

$(function() {
    $.ajax({
        url: "EditFeedApac.aspx/GetApacData",type: "POST",contentType: "application/json",success: function (result) {
            console.log(result.d);
        },error: showError
    });
});

C#

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static IEnumerable<PreApacData> GetApacData()
{
    var a = new Towers_WatsonEntities().tbl_TowersWatson_preAPAC.ToList();
    Mapper.CreateMap<tbl_TowersWatson_preAPAC,PreApacData>(); 
    var newData = a.Select(Mapper.Map<tbl_TowersWatson_preAPAC,PreApacData>).ToList(); 
    return newData;
}

如您所见,错误清楚地表明MaxJsonLength尚未设置为最大值.
在GetApacData()函数中,我添加了以下代码

var serializer = new JavaScriptSerializer();
serializer.MaxJsonLength = Int32.MaxValue;
string test = serializer.Serialize(newData);
return test;

现在MaxJsonLength可以变成4MB的大小,只是为了取消限制.
使用此属性集我仍然得到相同的序列化错误
在这做错了什么?
如何将数据发送到我的JavaScript?

解决方法

尝试更改配置文件

<configuration> 
  <system.web.extensions>
    <scripting>
       <webServices>
           <jsonSerialization maxJsonLength="50000000"/>
       </webServices>
    </scripting>
  </system.web.extensions>
</configuration>

显然你的

serializer.MaxJsonLength = Int32.MaxValue;

被覆盖.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...