コントローラーアクションの 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;
}