我有ASP.NET页面,它通过$ .ajax调用webservice并以json格式返回结果。
json数据是一组对象,每个对象都是具有自己属性的实体,例如:
StorageEntity
{
Capacity,
Name,
NameLink,
RelatedEntityName,
RelatedEntityNameLink,
etc..
}
问题在于一些该死的神奇数字:
当结果中的实体数量为2622时 - 似乎无关紧要有多少属性包含StorageEntity - ajax响应失败!
起初我认为数据总量太大了。所以我减少了一些冗长的链接属性的格式。这样我将结果数据量减少了20%。但是,幻数没有改变!!
仅供参考:stringify-ed结果json的长度为5MB,优化后大约为4MB。 我知道它太多了,并会考虑它。
但是,请解释一下 - 为什么它没有帮助,仍然有2622条记录没有输出(2621没问题),无论数据的总量是多少?
P.S。我尝试了各种各样的东西,比如maxJsonLength,特别是MaxJsonDeserializerMembers - 没有什么帮助......
答案 0 :(得分:0)
我终于发现,删除任何属性(不减少其文本表示)正在解决问题。但是我不想失去我的任何财产,所以...
解决方案是数据协定序列化程序的maxItemsInObjectGraph参数。
你只需要添加这个
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<dataContractSerializer maxItemsInObjectGraph="307200"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
进入您网站的网络配置。 我的实体有很多属性,这个数字乘以记录数量似乎大于默认设置的64K。