0

我正在使用 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 属性的更改没有被识别吗?

4

2 回答 2

0

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

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

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

于 2013-08-14T04:57:06.187 回答
0

您可以尝试从 WCF 服务更改它

var jsonResult = Json(data, JsonRequestBehavior.AllowGet);
  jsonResult.MaxJsonLength = int.MaxValue;
  return jsonResult;
于 2020-10-01T18:16:10.223 回答