26

ajax約 200 ~ 300 レコードの Web メソッドを介して、jQuery のポスト メソッドを介してタブ コンテンツ データをロードしています。コンソールに次のエラーが表示されます。

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

このように Web.configで属性の長さを変更maxJsonLengthしても役に立ちません。

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

誰でもこれを解決するのを手伝ってもらえますか?

4

3 に答える 3

36

JavaScriptSerialzer には、MaxJsonLength という名前のパブリック プロパティがあります。

http://msdn.microsoft.com/en-us/library/system.web.configuration.scriptingjsonserializationsection.maxjsonlength.aspx

今、あなたのjsonをデシリアライズしているところで、これを使ってください

JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.MaxJsonLength = Int32.MaxValue; //Or any size you want to use, basically int maxValue is 2GB, you shouldn't need this big json string to deserialize, else you are doing it wrong.
myObject obj = serializer.Deserialize<myObject>(yourJsonString);

そして、これは完全に機能するはずです。私は最近、msdn を介してこれを理解し、長い間悩まされていた問題を解決しました。

于 2013-03-26T20:52:02.737 に答える
0

文字列のサイズがわからないのに、設定した最大制限をまだ超えている可能性がありますか?

理想的には、ajax シナリオは、大量のデータを取得するためではなく、小規模から中規模のサーバー側呼び出しのみを対象としています。非同期リクエストを使用して大量のデータを取得している場合は、問題が発生しています。

代替案については、こちらを参照してください

于 2012-08-09T10:37:35.557 に答える