如何在不更改maxJsonLength的情况下发送大型/多部分JSON对象

本文关键字:大型 多部 对象 JSON 情况下 maxJsonLength | 更新日期: 2023-09-27 17:57:46

在我当前的C#web应用程序中,我从WebMethod请求一个JSON对象,这个JSON对象超过了最大JSONLength。结果是:

InvalidOperationException:字符串的长度超过了在maxJsonLength属性上设置的值。

我目前的解决方案是将maxJsonlength(在Web.config中)提高到对象的JSON长度以上,但现在我正在将我的应用程序迁移到Windows Server(它似乎不支持这种覆盖)。有没有一种方法可以通过ajax POST分部分发送JSON对象?如果是这样的话,什么是最好的解决方案,我已经寻找了一种将数据分为多个部分发送的方法,但没有明确的解决方案。

如何在不更改maxJsonLength的情况下发送大型/多部分JSON对象

这不是一个不编辑maxJsonLength的解决方案,但它允许在Windows Server中修改maxJsonLength。

在web.config中添加以下内容使我可以编辑maxJsonLength。

<configuration>
  <configSections>
    <sectionGroup name="system.web.extensions"         type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
    <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
        <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
        <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
            <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere" />
            <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication" />
            <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication" />
            <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication" />
        </sectionGroup>
    </sectionGroup>
    </sectionGroup>
  </configSections>
  ... 
</configuration>

我希望这能帮助其他遇到类似问题的人。