【问题标题】:MaxJsonLength error in NewtonSoft JsonConvert.SerializeObjectNewtonSoft JsonConvert.SerializeObject 中的 MaxJsonLength 错误
【发布时间】:2023-04-02 08:51:01
【问题描述】:

我有一个 ASP.NET 项目,其中一些 AJAX 调用 web 方法,这将返回 JSON。

如果DataSet 有大约 100 行,则没有问题。但是有 1000 行,它会启动错误:

使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的大小超过了 maxJsonLength 属性中设置的值

    [WebMethod(EnableSession = true)]
    public static string PublicWebMethod()
    {
            DataSet ds = new DataSet(); // in the reality do a mountrous query

            if (ds.Tables[0].Rows.Count > 0)
            {
                return JsonConvert.SerializeObject(clsUtil.ToArray(ds.Tables[0]));
            }
            else
            {
                return "false";
            }
        }
    }

如何通过在方法中设置配置来解决这个问题?

我不想更改web.config

【问题讨论】:

  • 可能不使用 DatSet 和 JsonConvert.Serialize,而是使用 DataReader 和 JsonTextWriter,这样您就可以以流方式编写 JSON。我知道,代码要多一点,但性能更高,内存要求也不那么重。
  • @AdamB 这是一个很好的解决方法。

标签: c# asp.net webmethod jsonconvert


【解决方案1】:

我遇到了类似的问题,花了一段时间才找出问题并解决。 请在

之后加上以下代码
<system.web.extensions>
  <scripting>
    <webServices>
      <jsonSerialization maxJsonLength="50000000" />
    </webServices>
  </scripting>
</system.web.extensions>

【讨论】:

  • 唯一的方法是编辑web.config?我真的不想只用一种方法改变整个项目,
猜你喜欢
  • 1970-01-01
  • 2021-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多