asp.net-mvc - supera - maxjsonlength asp net mvc 5
JSON, ASP.NET MVC-excepción de MaxJsonLength (4)
Solo intento cambiar algunos números separados por comas a la interfaz:
[AcceptVerbs(HttpVerbs.Get)]
public JsonResult GetSquares()
{
var result = new JsonResult();
result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
IList<double> list = new List<double>();
...
result.Data = list;
return result;
}
Esto funciona bien siempre que haya solo unos pocos números. Desafortunadamente, tengo que cambiar muchos números ocasionalmente y obtener una excepción MaxJsonLength. Intenté varias sugerencias para solucionar esto (agregue algo al archivo web.config, etc.). Tal vez no tengo que usar JSON después de todo? Sin embargo, todavía tengo que hacer algo con los números usando javascript. Estoy usando cosas de ajax de jquery en este momento.
Cualquier sugerencia bienvenida ...
Esto no funcionará?
<configuration>
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="2147483644"/>
</webServices>
</scripting>
</system.web.extensions>
</configuration>
Si no, tal vez puedas pasarlo como una cuerda ...
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult GetSquares()
{
IList<double> list = new List<double>();
....
return Content(string.Join(",", list));
}
Consulte la explicación y la clase LargeJsonResult en http://brianreiter.org/2011/01/03/custom-jsonresult-class-for-asp-net-mvc-to-avoid-maxjsonlength-exceeded-exception/
Aquí hay otro JsonResult
personalizado ( CorrectJsonResult
) que maneja los límites de serialización más grandes que el 4MB predeterminado permitido por JavascriptConverter
.
Y otro ejemplo que usa ContentResult
lugar de la subclase JsonResult
.
public ActionResult GetLargeJsonResult()
{
return new ContentResult
{
Content = new JavaScriptSerializer { MaxJsonLength = Int32.MaxValue }.Serialize(myBigdata),
ContentType = "application/json"
};
}
Amplié el controlador de la clase base y funciono bien:
Clase ControllerExtensions:
namespace SCAWEB.Helpers
{
public static class ControllerExtensions
{
#region Json
public static int MaxJsonLength{get;set;}
static ControllerExtensions()
{
MaxJsonLength = 2147483644;
}
public static System.Web.Mvc.JsonResult LargeJson(this System.Web.Mvc.Controller controlador, object data)
{
return new System.Web.Mvc.JsonResult()
{
Data = data,
MaxJsonLength = MaxJsonLength,
};
}
public static System.Web.Mvc.JsonResult LargeJson(this System.Web.Mvc.Controller controlador, object data, System.Web.Mvc.JsonRequestBehavior behavior)
{
return new System.Web.Mvc.JsonResult()
{
Data = data,
JsonRequestBehavior = behavior,
MaxJsonLength = MaxJsonLength
};
}
//TODO: You can add more overloads, the controller class has 6 overloads
#endregion
}
}
Clase MyController:
using SCAWEB.Helpers;
namespace SCAWEB.Controllers
{
public class VentasController : Controller
{
public ActionResult VentasList (){
//Todo: All the action code
//return this.Json(myData);
return this.LargeJson(myData);//Here I use my extensions
}
}
}
Puedes especificar la longitud máxima en tu código:
ControllerExtensions.MaxJsonLength = 1073741824;//1GB