单击按钮和实际执行的Javascript方法之间会发生什么?

时间:2016-10-11 19:06:37

标签: javascript jquery asp.net ajax asp.net-mvc

我有一个使用MVC 4,jquery和Telerik的Kendo控件的ASP.NET Web应用程序。

我的网页上有以下内容:

<input id="cmdSaveToFile" title="Save To File" class="button" type="button" value="Save To File" onclick="SaveToFile();" tabindex="2" />

但是,如果我在我的Javascript文件中设置了一个断点,其中定义了SaveToFile(),则断点不会被击中。该方法应该向服务器发送ajax请求,然后服务器将创建一个文件并将其存储在会话变量中以供以后下载。

服务器上的错误日志引用此错误:

  

使用JSON JavaScriptSerializer进行序列化或反序列化时出错。字符串的长度超过maxJsonLength属性上设置的值。

我已经针对该特定错误查看了这些SO问题:

MaxJsonLength exception in ASP.NET MVC during JavaScriptSerializer

Can I set an unlimited length for maxJsonLength in web.config?

我已将接受的答案内容添加到我的web.config中,但这并没有解决问题。我无法以编程方式设置JsonResult.MaxJsonLength属性,因为我不知道在单击按钮和我在实际执行的视图文件中指定的方法之间发生了什么。使用Visual Studio + IE我无法在任何地方打破;不在控制器中而不在JS中。

如果我使用Chrome,在他们的开发工具“事件监听器断点”中我可以让它在鼠标向上/向下/单击中断,但所有执行的jquery对我来说都是完全不可读的。它会在引擎盖下做什么导致这个错误?

修改为了澄清,相关网页只包含一个文本框和2个按钮:保存到文件,然后关闭。如果单击“保存到文件”,软件会将文本框的内容写入RTF文件,并将该文件显示给用户以供下载。此文本框在上载文件并尝试解析文件后包含错误报告。如果我上传并解析一个小文件,它的行为是正确的。只有当我上传非常大的文件时会产生大量的错误,这些文件不再有效(因为错误报告对于JSON来说太长了)...但是如果SaveToFile()中的断点没有被触发那么到底是怎么回事?

1 个答案:

答案 0 :(得分:0)

尝试在web.config应用设置中设置

<add key="aspnet:MaxJsonDeserializerMembers" value="2147483644" />

编辑:

<bindings>
  <basicHttpBinding>
    <binding name="YourBindingName" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="20000000" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
      <security mode="Transport"></security>
    </binding>
  </basicHttpBinding>
</bindings>