これはここでの質問と非常によく似た質問ですが、それは今では 4 歳なので、追加し続けることはないと思いました。私もエラーが発生しています
Error during serialization or deserialization using the JSON JavaScriptSerializer. The length of the string exceeds the value set on the maxJsonLength property.
ただし、これは MVC ではなく標準の ASP.NET アプリケーションで発生します。私のアプリケーションは、膨大な数の列(および少数の行)を持つ単一のデータ テーブルを作成し、それを GridView (実際には Telerik RadGrid - 違いは重要ではないと想定しています) にバインドします。次に、グリッドの Render イベント中にエラーが発生します。
Exception information:
Exception type: InvalidOperationException
Exception message: 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, SerializationFormat serializationFormat)
at Telerik.Web.UI.RadGrid.DescribeProperties(IScriptDescriptor descriptor)
at Telerik.Web.UI.ScriptRegistrar.GetScriptDescriptors(Control control)
at Telerik.Web.UI.RadCompositeDataBoundControl.GetScriptDescriptors()
at System.Web.UI.ScriptControlManager.RegisterScriptDescriptors(IScriptControl scriptControl)
at Telerik.Web.UI.RadCompositeDataBoundControl.RenderContents(HtmlTextWriter writer)
at Telerik.Web.UI.RadGrid.Render(HtmlTextWriter writer)
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
...
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
at ASP.commoncontrols_ccesdmarginals_ascx.__Render__control1(HtmlTextWriter __w, Control parameterContainer) in d:\Websites\CCESD\CommonControls\CCESDMarginals.ascx:line 12
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
at CCESD.Web.Controls.CCESDMarginals.Render(HtmlTextWriter writer) in d:\Websites\CCESD\CommonControls\CCESDMarginals.ascx.cs:line 121
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
at System.Web.UI.WebControls.WebControl.RenderContents(HtmlTextWriter writer)
at System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer)
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
at System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer)
at System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer)
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
at System.Web.UI.Page.Render(HtmlTextWriter writer)
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
at Telerik.Web.UI.RadAjaxControl.RenderPageInAjaxMode(HtmlTextWriter writer, Control page)
at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children)
at System.Web.UI.Page.Render(HtmlTextWriter writer)
at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
web.config ファイルで設定を試み<jsonSerialization maxJsonLength="2147483647"></jsonSerialization>
ましたが、違いはありませんでした。これは、Web サービスを使用していないことを考えると、まったく驚くべきことではありません。次の web.config 設定も試しましたが、すべて効果がありません。
<add key="aspnet:MaxHttpCollectionKeys" value="2147483647"/>
<add key="aspnet:MaxJsonDeserializerMembers" value="2147483647"/>
<add key="aspnet:UpdatePanelMaxScriptLength" value="2147483647" />
他のリンクの 2 番目の回答 ( web.config で maxJsonLength に無制限の長さを設定できますか? ) は、私の状況を要約しているようですが、MVC を使用していないため、回答の利用方法がわかりません。任意の大きなテーブルを操作するために、GridView (または同等のもの) の内部シリアル化プロセスをオーバーライドする方法はありますか?