我正在使用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属性的更改无法被识别?
答案 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;