Web.config jsonSerialization maxJsonLength ignored

24 浏览
0 Comments

Web.config jsonSerialization maxJsonLength ignored

我有一个在.NET 4.0下运行的MVC3应用程序,当我使用JavaScriptSerializer.Deserialize时,我遇到了一个错误。

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

在阅读了Can I set an unlimited length for maxJsonLength in web.config之后,我在我的web.config中放置了jsonSerialization maxJsonLength键,但它被忽略了。尽管我可以在代码中设置JavaScriptSerializer.MaxJsonLength属性,并且它可以正常工作。

我想把值放在Web.config中而不是代码中。这是我使用JavaScriptSerializer的方式。

Dim client As New WebClient
...
Dim result = _client.DownloadString("Test")
Dim serializer = New JavaScriptSerializer
Return serializer.Deserialize(Of Foo)(result)

这是我的Web.config


    
    ...
    
    
    ...
    
    
    
      
      
      
    
    
    
      
        
        
        
        
        
        
      
    
  
  
    
      
        
      
    
    
 
 ....


0
0 Comments

根据提供的链接(第二个得票最多的答案),你的web.config设置将被忽略,因为你正在使用一个内部实例的JavaScriptSerializer。

如果你需要将值存储在web.config中,你可以在部分中添加一个名为maxJsonLength的键,其值为50000000,然后在代码中使用它,如下所示:

var serializer = new JavaScriptSerializer();

serializer.MaxJsonLength = ConfigurationManager.AppSettings['maxJsonLength'];

你应该加粗显示internal instance。这是我误读的地方!

已完成。我刚意识到我给了你一个C#的例子,直到现在才看到你的vb.net标签 🙂

0