JavaScriptSerializer 実行中の ASP.NET MVC での MaxJsonLength 例外 質問する

JavaScriptSerializer 実行中の ASP.NET MVC での MaxJsonLength 例外 質問する

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

次の例外が発生しますInvalidOperationException:

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

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

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

前述のように文字列として返したくないのですこれだから答えてください。

私の研究で出会ったのはこれこの動作を回避するには、独自のブログ投稿ActionResult(例LargeJsonResult : JsonResult) を書くことをお勧めします。

これが唯一の解決策でしょうか?
これは ASP.NET MVC のバグでしょうか?
何か見落としているのでしょうか?

どのような助けでも大歓迎です。

ベストアンサー1

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

これを行うと、私の場合はうまくいきました:

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

おすすめ記事