超出 JavaScriptSerializer maxJsonLength

Posted

技术标签:

【中文标题】超出 JavaScriptSerializer maxJsonLength【英文标题】:JavaScriptSerializer maxJsonLength exeeded 【发布时间】:2016-01-22 23:17:29 【问题描述】:

我正在 Visual Studio 2013 中用 C# 创建一个 Web 服务。 我已连接到数据库并使用以下代码返回 json。

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetCustomer()

    var json = "";
    var customer = from result in dc.Auto_Kada_SIA_Customers
                   select result;

    javascriptSerializer jss = new JavaScriptSerializer();
    jss.MaxJsonLength = Int32.MaxValue;
    json = jss.Serialize(customer);
    int t = json.Length;
    return json;

但是当我尝试使用它时,我得到以下错误


  "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"

如果是这样的话我会没问题,但 MaxJsonLentgh 设置为 2,147,483,647 并且 json.Length 是 21,460,284。

问题是什么,我该如何解决?

【问题讨论】:

不是用上面的注解自动将对象序列化为json吗?试试public Customer[] GetCustomer ... return dc.Auto_Kada_SIA_Customers; 没有名为 Customer 的类,因为我使用的是 DataClasses 【参考方案1】:

尝试在web.config中配置最大长度如下

<configuration>  
   <system.web.extensions>
   <scripting>
       <webServices>
           <!-- Update this value to set the max length -->
           <jsonSerialization maxJsonLength="2147483647" />
       </webServices>
   </scripting>
   </system.web.extensions>
</configuration>  

【讨论】:

以上是关于超出 JavaScriptSerializer maxJsonLength的主要内容,如果未能解决你的问题,请参考以下文章

DataContractJsonSerializer 和 JavaScriptSerializer 有啥区别?

使用 LINQ/JavaScriptSerializer 创建 JSON 对象而不是数组

JavaScriptSerializer 可以排除具有空值/默认值的属性吗?

JavaScriptSerializer 正在从日期中减去一天

指定分配索引值时,JavaScriptSerializer 不使用枚举 [重复]

带有 Razor 和 ASPX 引擎的 JavaScriptSerializer