将一个非常大的json对象传递给mvc4控制器

时间:2015-10-26 00:30:27

标签: json asp.net-mvc-4

我已经看过了,我似乎无法让它工作,我不断收到错误消息,我的json对象太大而无法传递给我的控制器。

The length of the string exceeds the value set on the maxJsonLength property.

所以我有一个json对象,其中包含最多3个图像的base64字符串以及一些文本数据。

我正在尝试将该对象传递给控制器​​。如果我不包含图像,它可以正常工作。

所以我试过,在web.config中;

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

以及;

<add key="aspnet:MaxJsonDeserializerMembers" value="150000000" />

我已将我的控制器从ActionResult更改为JsonResult。

我已经读过我需要创建自己的json解析器等,很多网站都会处理从控制器传递数据到客户端的问题。

我正在尝试从客户端向控制器获取大量数据。

这里有任何帮助吗?

1 个答案:

答案 0 :(得分:0)

如果您查看JsonResult类的源代码ASP.NET MVC,可以找到此代码(+):

if (Data != null)
{
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    if (MaxJsonLength.HasValue)
    {
        serializer.MaxJsonLength = MaxJsonLength.Value;
    }
    if (RecursionLimit.HasValue)
    {
       serializer.RecursionLimit = RecursionLimit.Value;
    }
    response.Write(serializer.Serialize(Data));
}

MaxJsonLength属性的defualt值设置为2MB,RecursionLimit设置为100。 您可以通过以下方式更改defualt值:

return new JsonResult
{
     MaxJsonLength = Int32.MaxValue,
     Data = customers,
     JsonRequestBehavior = JsonRequestBehavior.AllowGet
};

more info