jquery – 将大型JSON对象发布到ASP.NET MVC

前端之家收集整理的这篇文章主要介绍了jquery – 将大型JSON对象发布到ASP.NET MVC前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用KnockoutJS的映射插件将我的模型转换为Knockout对象.但是我在将大型json对象发送回服务器时遇到问题.我的ajax调用看起来像这样:
$.ajax({
    url: "/home/DoStuff",type: "POST",data: JSON.stringify({ deal: ko.toJS(myObjectviewmodel) }),contentType: "application/json",dataType: "json",success: function (result) {
        console.log(result);
    },error: function (xhr,status,message) {
        console.log(xhr);
    }
});

执行此脚本永远不会命中控制器中的DoStuff操作.当我用Firebug检查时,POST就会继续旋转.在Firebug的Net选项卡中,它表示Post Body为159.9 KB,Total Sent为165.1 KB(包括标题).如果它被发送,为什么它没有在代码中击中我的断点?

但是,当我只发送myObjectviewmodel的属性时,它会发布很好,一切都很成功.因此,我认为问题在于发布的数据大小.所以我尝试增加maxJsonLength.

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

这没有用.

还有什么我应该做的吗?

解决方法

我想我的对象超过了允许ASP.NET反序列化的最大成员数.我添加了以下内容增加它并且它可以工作.
<appSettings>
    <add key="aspnet:MaxJsonDeserializerMembers" value="150000" />
</appSettings>

更新:所以还有更多的东西,因为在我开始工作之后,最终它将停止工作似乎没有理由. Firebug会再次显示帖子刚刚旋转而没有击中后端的代码.只有在我关闭Firefox后,杀死了IIS Express进程并关闭了Visual Studio,该帖子才开始重新开始工作.但关闭VS似乎是关键.在我再次使用它之后,更改代码并重新运行应用程序会使问题重新出现.出现问题时,即使是硬刷新也不会加载页面.它只会坐在那里旋转.该页面将仅在我终止IIS Express进程并从VS重新运行后重新加载.

所以我转储了IIS Express并在我的机器上使用了完整的IIS.看起来这样可以解决问题.即使在更改代码和重新编译之后,每次都会发布大型json数据.

IIS Express似乎可以处理少量的json,但在更大的集合上会出现窒息.我没有彻底测试到100%确认这一点,但我知道完整的IIS性能更可靠.虽然没有测试VS的内部Web服务器.

环境:Windows 8,Visual Studio 2012 Update 3

猜你在找的jQuery相关文章