maxJsonLength被忽略

时间:2014-02-02 09:58:07

标签: json web-services serialization xml-serialization

我正在从DB加载一个XML文件,当它变大时我在web.config中使用了maxJsonLength属性..但它完全被忽略了..在线查看了问题并完成了所有可能而且它无法正常工作。< / p>

这是我的web.config文件

<system.web>
 <compilation debug="true" targetFramework="4.0" />
 <pages theme="Main" styleSheetTheme="Main" />
 <customErrors mode="Off" />
 </system.web>

<system.web.extensions>
 <scripting> 
 <scriptResourceHandler enableCompression="true" enableCaching="true"/> 
 <webServices>
  <jsonSerialization maxJsonLength="50000000"/>
 </webServices>
 </scripting> 
     

当我从DB加载xml文件时,它给了我一个不完整的XML文件。通常当我收到这个xml文件时,我将它拆分成一个较小的部分并发送给jquery进行分区。所以它可以处理大的xml数据..但是再次因为maxJsonLength属性被忽略了它不起作用.. < / p>

当我在网上查看时,有些帖子说我必须硬编码,所以我在我的web配置文件的appsettings中添加了一个字段,如下所示

<appSettings>
   <add key="maxJsonLength " value="5000000" />
     

然后在app-start的global.asax中我添加了这段代码:

// Code that runs on application startup
       var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
       serializer.MaxJsonLength = Convert.ToInt32(ConfigurationManager.AppSettings[0]);

再没有什么事情发生......也许我把这个代码放在错误的地方......

我将非常感谢你的帮助..谢谢

//更新

当我在没有JSON的情况下对数据库使用相同的调用时,它给了我相同的短xml文件,只返回2033个字符,所以我猜这个问题可能是一个SQL问题..这里是我的存储过程参考

  

ALTER PROCEDURE dbo.LoadMarkers     @CategoryID int = -1,@ Marker int = -1 AS

     

选择m.ID为mid,

     

(@MarkerID!= -1然后m.MarkerImage结束时的情况)为mimg,

     

(@MarkerID!= -1然后m.Introduction结束时的情况)as intr,

     

(@MarkerID!= -1然后m.Title结束时的情况)为t

     

,m.Latitude as lt,m .Longitude as lg,

     

m.CategoryID为cid,

     

(@MarkerID!= -1然后c.Name结束时的情况),

     

c.MarkerImage为cimg

  from Marker m    join Category c on c.ID = m.CategoryID 
     

其中categoryID =(@CategoryID!= -1然后@CategoryID

的情况
      else categoryID

          end) 
  and m.ID = (case when @MarkerID != -1 then @MarkerID
          else m.ID
          end)
     

表示XML路径('Marker'),Root('Markers')

     

RETURN

1 个答案:

答案 0 :(得分:0)

这不是JSON问题,它使用普通的执行语句而不是ExecuteXML来读取SQL结果。

此问题现已关闭。

感谢