JavaScriptSerializer似乎忽略了maxJsonLength配置。

31 浏览
0 Comments

JavaScriptSerializer似乎忽略了maxJsonLength配置。

我遇到了最大JSON长度的问题,所以根据互联网上的各种来源建议,我在配置文件中增加了默认的JSON长度,如下所示:


    
      
        
      
    
  

但问题仍然存在。然后我发现了一篇非常棒的博客文章,建议我编写自己的ActionResult。我正在使用Telerik的MVC网格和MVC3.net。有没有人知道为什么序列化器忽略了配置。

0
0 Comments

在ASP.NET MVC中,如果要设置MaxJsonLength,需要在执行过程中进行设置。在返回JsonResult的方法中,可以通过以下方式设置MaxJsonLength的值:

public JsonResult GetData()
{
    var model = GetModel();
    var outputJsonResult = Json(model);
    outputJsonResult.MaxJsonLength = 10 * 1024 * 1024; // 10 MB
    return outputJsonResult;
}

在上述代码中,我们首先获取了模型数据,然后使用Json方法将其转换为JsonResult对象。接下来,我们通过设置outputJsonResult对象的MaxJsonLength属性,将其值设置为10 * 1024 * 1024,即10MB。最后,将outputJsonResult对象作为返回值返回。

然而,有时候我们发现无论如何设置MaxJsonLength的值,JavaScriptSerializer似乎都会忽略这个配置。这是为什么呢?

原因是在ASP.NET MVC中,默认情况下,Json方法使用的是JavaScriptSerializer来进行序列化操作。而JavaScriptSerializer类在序列化时,默认的最大长度为int.MaxValue,即2,147,483,647个字符。因此,无论我们如何设置MaxJsonLength的值,都无法超过这个限制。

那么如何解决这个问题呢?

解决这个问题的方法是使用JsonResult类的属性,而不是直接使用Json方法。具体做法是创建一个新的JsonResult对象,并将其属性MaxJsonLength设置为所需的值,然后将数据通过Json方法进行序列化,最后返回这个新创建的JsonResult对象。示例代码如下:

public JsonResult GetData()
{
    var model = GetModel();
    var outputJsonResult = new JsonResult
    {
        Data = model,
        MaxJsonLength = 10 * 1024 * 1024 // 10 MB
    };
    return outputJsonResult;
}

通过使用JsonResult类的属性来设置MaxJsonLength的值,我们可以成功地将其限制在我们所需的范围内,解决了JavaScriptSerializer忽略maxJsonLength配置的问题。

0
0 Comments

问题原因:JavaScriptSerializer忽略了maxJsonLength配置。

解决方法:以下是解决该问题的唯一方法,具体细节可参考这个问题的问答:MaxJsonLength exception in ASP.NET MVC during JavaScriptSerializer

在ASP.NET MVC中,使用JavaScriptSerializer序列化对象时,有时会遇到一个问题,即JavaScriptSerializer忽略了maxJsonLength配置。本文将介绍这个问题的出现原因以及解决方法。

问题的出现原因是JavaScriptSerializer忽略了maxJsonLength配置。当要序列化的对象很大时,JavaScriptSerializer可能会抛出异常,提示超出了默认的最大JSON长度。

为了解决这个问题,我们可以通过以下方法来设置maxJsonLength配置的值。

首先,我们需要在Web.config文件中找到节点,并添加或修改以下配置:


    

其中,xxx是我们希望设置的最大JSON长度。

另外,我们还可以在代码中通过以下方式来设置maxJsonLength配置的值:

var serializer = new JavaScriptSerializer();
serializer.MaxJsonLength = xxx;

需要注意的是,设置maxJsonLength配置的值时,应根据实际需要来确定一个合理的值,以避免出现性能问题。

解决JavaScriptSerializer忽略maxJsonLength配置的方法是在Web.config文件中或代码中设置maxJsonLength的值。希望本文对你解决这个问题有所帮助。

参考链接:

- [MaxJsonLength exception in ASP.NET MVC during JavaScriptSerializer](https://stackoverflow.com/questions/5692836)

0