在web.config中更改maxJsonLength属性无效

时间:2013-08-14 04:44:44

标签: asp.net json web-config

我正在使用MS Virtual Earth AJAX控件在ASP.Net 3.5站点的地图上绘制自定义边界。我有一个WCF服务,我从ASP.Net调用它来返回我需要绘制的点。在一个例子中,我需要绘制~40,000点。

每当我需要绘制的点数(从WCF服务返回的行)超过25,000时,我都会收到以下错误。

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

我尝试将web.config中的maxJsonLength属性修改为2147483647,但更改此值无效。无论我将值设置为什么,当我尝试绘制超过25,000个点时,我总是会出错。我甚至尝试将其设置为“ABC”,当我的WCF服务返回少于25,000条记录时,我的网站仍然有用。

我验证了我的machine.config文件中没有maxJsonLength属性。

以下是我的web.config文件的摘录:

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

我是否知道我对maxJsonLength属性的更改无法被识别?

3 个答案:

答案 0 :(得分:0)

此外,将以下键添加到appSettings:

<appSettings>
    <add key="aspnet:MaxJsonDeserializerMembers" value="2147483647" />
    ...
</appSettings>

至少在Mvc中,此设置足以解决此问题。

答案 1 :(得分:0)

此解决方案的MS链接适用于我:http://support.microsoft.com/kb/981884

答案 2 :(得分:0)

您可以尝试通过WCF服务对其进行更改

var jsonResult = Json(data, JsonRequestBehavior.AllowGet);
  jsonResult.MaxJsonLength = int.MaxValue;
  return jsonResult;