UpdatePanelはAsynPostBackのように巨大なデータと格闘しているようです。 jSonSerializer maxLengthは役に立ちません
-
07-07-2019 - |
質問
ASP.NET 3.5アプリを使用しており、ネストされたカスタムコントロールを持つ更新パネルを更新しようとしています。このカスタムコントロールにはComponentArt Girdがあり、この更新時にほぼ13 MBのデータで満たされます(はい、それを回避できます...)。
更新パネルに隠れたボタンがあり、updatePanelとグリッドが必要なときにクライアント側からJSによってトリガーされます。
Updatepanelxyz.Update()を使用してasyncPostbackの間にUpdateメソッドを呼び出すと、プロセスの後半でasyncPostBackErrorが発生し、JSonSerializerはこの量のデータを処理できないと言います。指定した値を増やす必要があります。
確かに。わかった。しかし、web.configでこの値を変更すると、8MB程度までしか機能しませんが、それ以上は機能しません。その場合、JSonSerializerに制限はありますか。値をInt32の最大値に設定しました。これは、デフォルト値の1000xのようなもので、4MBのシリアル化されたデータには既に十分です。
提案はありますか?シリアライザーにそれを強制させる方法はありますか?別のシリアライザーを使用する方法はありますか?
乾杯、 スティーブ
解決
最善の策は、web.configセクションのScriptingJsonSerializationSection.MaxJsonLengthプロパティを変更することです。
JsonSerializerクラスの2097152文字の制限とは対照的に、デフォルトは102400文字です。
参照:
JsonSerializerクラスのmaxJsonLengthプロパティ
and
JsonSerialization構成セクションの最大長プロパティ
前述したように、残念ながら設定セクションのプロパティを変更することが唯一の方法です。
他のヒント
おい、1 MBのデータが多すぎる-なぜ13が必要なのですか?
UIをリファクタリングする必要があると本当に思います。私はあなたのネットワークがどれほど速いか気にしない、それはただのクレイジーなものだ!
UIおよびDataAccessレイヤーにはリファクタリングが必要であることに絶対に同意しますが、短期的には、ソフトウェアの次の更新が出るまでクライアントを支援するシンプルで迅速なソリューションを探していました。