1

データを表示するように jqgrid を設計しましたが、実行中にエラーが発生しました。

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

最小限のデータでグリッドを実行すると、実行されます...

私も web.conf を次のように変更しようとしました:

<scripting>
<webServices>
  <jsonSerialization maxJsonLength="50000000"/>
</webServices>

しかし、エラーは同じままでした..以下は私のweb.confファイルです..

<compilation debug="true" targetFramework="4.0">
        <assemblies>
            <add assembly="MySql.Data, Version=5.0.9.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/></assemblies></compilation>
    <!--
      The <authentication> section enables configuration 
      of the security authentication mode used by 
      ASP.NET to identify an incoming user. 
    -->
    <authentication mode="Windows"/>
    <!--
       The <customErrors> section enables configuration 
       of what to do if/when an unhandled error occurs 
       during the execution of a request. Specifically, 
       it enables developers to configure html error pages 
       to be displayed in place of a error stack trace.

       <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
         <error statusCode="403" redirect="NoAccess.htm" />
         <error statusCode="404" redirect="FileNotFound.htm" />
       </customErrors>
    -->
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>
</system.web>

4

1 に答える 1

2

これがあなたの問題の解決策であるかどうかは正確にはわかりません。コードビハインドで maxJsonLength を設定してみてください (その場で):

public static string GetJSONString <T> (List<T> data)
{
    JavaScriptSerializer serializer = new JavaScriptSerializer() { MaxJsonLength = Int32.MaxValue, RecursionLimit = 100 };
    return serializer.Serialize(data);
}

オブジェクトの作成時に MaxJsonLength プロパティを初期化します。この解決策が機能しない場合は、JSON 文字列の長さを区切る必要があると思います。この助けを願っています。

于 2013-02-01T07:36:24.907 に答える