Ciao a tutti,
sto sviluppando una pagina web con dei grafici in javascript utilizzando la libreria highstock e mi trovo davanti ad un problema che non riesco a risolvere.
Ho una mole di dati molto pesante, si parla di milioni di dati, da passare a js in formato stringa in questo modo:
ScriptManager.RegisterClientScriptBlock(this.Page, this.Page.GetType(),"UpdatePanel_PreRender", test, false);
dove test è la mia stringa costruita cosi:
test= "<script language='javascript'>DisegnaGrafici(" + StringaGrafico + ");</script>";
e DisegnaGrafici è la mia funzione js che crea il grafico e StringaGrafico la string contenente tutte le accoppiate [data,valore].
L'errore che mi genera la pagina è il seguente:
System.InvalidOperationException: Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property. at
System.Web.Script.Serialization.JavaScriptSerializer.Serialize(Object obj, StringBuilder output, SerializationFormat serializationFormat) at
System.Web.UI.ScriptRegistrationManager.WriteScriptWithTags(HtmlTextWriter writer, String token, RegisteredScript activeRegistration) at
System.Web.UI.ScriptRegistrationManager.RenderActiveScriptBlocks(List`1 updatePanels, HtmlTextWriter writer, String token, List`1 scriptRegistrations) at
System.Web.UI.ScriptRegistrationManager.RenderActiveScripts(List`1 updatePanels, HtmlTextWriter writer) at
System.Web.UI.PageRequestManager.ProcessScriptRegistration(HtmlTextWriter writer) at
System.Web.UI.PageRequestManager.RenderPageCallback(HtmlTextWriter writer, Control pageControl) at
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) at
System.Web.UI.Page.Render(HtmlTextWriter writer) at
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) at
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) at
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) at
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
Ho provato due soluzioni trovate sul web ma nessuna delle due riesce a farmi alzare il limite di default del MaxJsonLength.
Soluzione 1: nel web.config ho inserito questo pezzo di codice
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="500000000"/>
</webServices>
</scripting>
</system.web.extensions>
Soluzione 2: nella pagina .cs ho inserito questo pezzo di codice
using System.Web.Script.Serialization.JavaScriptSerializer;
JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.MaxJsonLength = Int32.MaxValue;
Qualcuno riesce ad aiutarmi ad alzare questo limite max di default, che dovrebbe essere se non sbaglio 2097152.
Grazie