在单击按钮和Javascript方法实际执行之间发生了什么



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

我的网页上有以下内容:

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

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

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

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

我已经看了这些SO问题来寻找特定的错误:

MaxJsonLength异常. NET MVC期间的JavaScriptSerializer

我可以设置一个无限的长度为maxJsonLength在web.config?

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

如果我使用Chrome,在他们的开发工具的"事件监听断点"我可以让它打破鼠标上/下/点击,但所有的jquery执行是完全不可读的我。到底是什么导致了这个错误呢?

编辑为了澄清,所讨论的网页只是包含一个文本框和两个按钮:保存到文件,和关闭。如果单击"保存到文件",软件将文本框的内容写入RTF文件,并将该文件呈现给用户供下载。在他们上传文件并尝试解析后,此文本框包含一个错误报告。如果我上传并解析一个小文件,它的行为就会正确。只有当我上传非常大的文件时,这会产生大量的错误,这不再起作用(因为错误报告对JSON来说太长了)…但如果我的断点在SaveToFile()没有被触发,那么它到底在做什么?

尝试在您的web中设置。配置应用设置

<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>

最新更新