“JSON 请求太大而无法反序列化” MVC KnockoutJs
Posted
技术标签:
【中文标题】“JSON 请求太大而无法反序列化” MVC KnockoutJs【英文标题】:"The JSON request was too large to be deserialized" MVC KnockoutJs 【发布时间】:2017-09-18 05:50:48 【问题描述】:我一直在取消线程以寻找类似线程中的答案,但没有运气。
我正在使用 knockoutJS 将信息从我的部分视图传回,我收到“JSON 请求太大而无法反序列化”。
我已经完成了“ ”修复,但这没有帮助。
我的页面有一些安静的信息可以以列表的形式传回,我相信这就是为什么我在这个页面上得到错误,而不是在我使用敲除的其他页面上。
我读到我可以构建自己的序列化程序,但这本身可能会导致更多问题。
有人能提出替代方案吗?
我想知道的一件事是我是否可以停止传回整个列表而只传回选定的值,但我似乎找不到更多关于此的信息。
TIA
【问题讨论】:
嗨罗斯,欢迎来到 SO。请您发布代码以便可以重现问题吗? 【参考方案1】:我在下面添加了密钥,它对我有用。
<appSettings>
<add key="aspnet:MaxJsonDeserializerMembers" value="150000" />
</appSettings>
【讨论】:
【参考方案2】:这可能是设计使然....保护网站免受 DoS 攻击或超时条件
MaxJsonDeserializerMembers
有一个 app 设置,您可以增加该设置,但需要小心操作:...JSON payload members fails with an exception
我过去所做的是将表单分解为(可折叠)部分并按组进行 AJAX 发布,或者将表单分散到多个页面上。前端用户通常会更高兴,因为他们不会立即看到大量字段。
【讨论】:
【参考方案3】:当我通过 ajax 调用返回部分视图时,我收到了同样的错误消息。原来问题出在局部——“Object Reference not set to an instance of an object”。
@User.Address.Address1
“地址”为空。通过做一些检查来解决这个问题
@if(User.Address != null)
@User.Address.Address1
【讨论】:
以上是关于“JSON 请求太大而无法反序列化” MVC KnockoutJs的主要内容,如果未能解决你的问题,请参考以下文章
aspnet:MaxJsonDeserializerMembers 与 maxRequestLength