1. ホーム
  2. asp.net-mvc

[解決済み] ASP.NET MVCのJavaScriptSerializerでMaxJsonLength例外が発生する。

2022-06-02 20:42:49

質問

コントローラのアクションのひとつで、非常に大きな JsonResult をグリッドを埋めるために返しています。

私は以下のようになります。 InvalidOperationException 例外が発生します。

JSON JavaScriptSerializerを使用したシリアライズまたはデシリアライズの際にエラーが発生しました。文字列の長さがmaxJsonLengthプロパティに設定された値を超えています。

を設定すると maxJsonLength プロパティに web.config をより高い値に設定しても、残念ながら何の効果も示しません。

<system.web.extensions>
  <scripting>
    <webServices>
      <jsonSerialization maxJsonLength="2147483644"/>
    </webServices>
  </scripting>
</system.web.extensions>

にあるように、文字列として渡すのではなく この SOの回答です。

私の研究の中で、私は この ブログの記事で、独自の ActionResult (例えば LargeJsonResult : JsonResult など)は、この動作を回避するために推奨されます。

では、これが唯一の解決策なのでしょうか?

ASP.NET MVCのバグなのでしょうか?

私は何かを見逃しているのでしょうか?

どんな助けでも、最も感謝されます。

どのように解決するのですか?

MVC4で修正されたようです。

このようにすることができ、私の場合はうまくいきました。

public ActionResult SomeControllerAction()
{
  var jsonResult = Json(veryLargeCollection, JsonRequestBehavior.AllowGet);
  jsonResult.MaxJsonLength = int.MaxValue;
  return jsonResult;
}