gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 22:30:11 25 4
gpt4 key购买 nike

我正在使用 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);
}
});

执行此脚本永远不会触发 Controller 中的 DoStuff 操作。当我用 Firebug 检查时,POST 一直在旋转。在 Firebug 的“网络”选项卡中,显示“帖子正文”为 159.9 KB,“发送总量”为 165.1 KB(包括 header )。如果已发送,为什么它没有到达代码中的断点?

但是当我只发送 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 - 将大型 JSON 对象发布到 ASP.NET MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18622106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com