1

これはここでの質問と非常によく似た質問ですが、それは今では 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 (または同等のもの) の内部シリアル化プロセスをオーバーライドする方法はありますか?

4

0 に答える 0