如何增加ASP.NET WebAPI Post调用的json大小限制?

时间:2013-08-15 20:02:21

标签: jquery json asp.net-web-api json.net

页面上的表单有点太大了。它收集月度测量数据。请看一下样本:

{
"Year":2013,
"Month":3,
"Records":[
    {"Id":0,"Date":"3/1/2013","RiverSection":5,"UserNumber":56},
    {"Id":0,"Date":"3/1/2013","RiverSection":7,"UserNumber":200},
    {"Id":0,"Date":"3/1/2013","RiverSection":8,"UserNumber":556},
    {"Id":0,"Date":"3/2/2013","RiverSection":5,"UserNumber":56},
    {"Id":0,"Date":"3/2/2013","RiverSection":7,"UserNumber":200},
    ...
    ...
    {"Id":0,"Date":"3/31/2013","RiverSection":7,"UserNumber":200}
}

所以我将大数据发布到APIController。

我在使用Visual Studio调试器服务器的本地计算机上工作正常。但是我将代码上传到服务器(IIS 6)之后。它给出500 Internal Server Error

我尝试发布一些示例数据并检查字符串化json的长度。

在一个样本数据集中,我的json的长度是5743,并且我获得了成功"。但如果json大小达到17345,我得到500 Internal Server Error

所以我试图增加json的限制。基于this post

Web.Config

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

但它不起作用。

还有另一个答案,使用:

var serializer = new JavaScriptSerializer();
serializer.MaxJsonLength = Int32.MaxValue;

但是我们应该在哪里放置此代码?在Global.asax

请注意我使用的是IIS 6.这是一个问题吗?如何才能正确增加json大小的限制,以便我的数据可以达到WebApi操作?

感谢您的帮助。   

1 个答案:

答案 0 :(得分:19)

尝试在aspnet:MaxJsonDeserializerMembers

中添加appSettings下的web.config
<add key="aspnet:MaxJsonDeserializerMembers" value="20000"/>

来源: An ASP.NET request that has lots of form keys, files, or JSON payload members fails with an exception