2013-12-11 34 views
5

MVC3私は.NET 4.0のアプリケーションを実行していますが、JavascriptSerializer.Deserializeを使用するとエラーが発生します。Web.config jsonSerialization maxJsonLength無視

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

閲覧Can I set an unlimited length for maxJsonLength in web.config私はjsonSerialization maxJsonLengthキーを私のweb.configに入れましたが、無視されます。コードでJavaScriptSerializer.MaxJsonLengthプロパティを設定することはできますが、正常に動作します。

私はコードではなくWeb.configの値を持っています。ここで私はJavaScriptSerializerをどのように使っているのですか?ここで

Dim client As New WebClient 
... 
Dim result = _client.DownloadString("Test") 
Dim serializer = New JavaScriptSerializer 
Return serializer.Deserialize(Of Foo)(result) 

あなたは内部インスタンスを使用しているので、あなたが(第二最も投票の答えを)提供のリンクによると、あなたのweb.configファイルの設定は無視されます私のWeb.config

<configuration> 
    <configSections> 
    ... 
    </configSections> 
    <appSettings> 
    ... 
    </appSettings> 
    <system.web> 
    <customErrors mode="On"> 
     <error statusCode="404" redirect="/Http404"/> 
     <error statusCode="403" redirect="/Http403"/> 
     <error statusCode="550" redirect="/Http550"/> 
    </customErrors> 
    <compilation debug="true" targetFramework="4.0"/> 
    <pages controlRenderingCompatibilityVersion="4.0"> 
     <namespaces> 
     <add namespace="System.Web.Helpers"/> 
     <add namespace="System.Web.Mvc"/> 
     <add namespace="System.Web.Mvc.Ajax"/> 
     <add namespace="System.Web.Mvc.Html"/> 
     <add namespace="System.Web.Routing"/> 
     <add namespace="System.Web.WebPages"/> 
     </namespaces> 
    </pages> 
    </system.web> 
    <system.web.extensions> 
    <scripting> 
     <webServices> 
     <jsonSerialization maxJsonLength="50000000"/> 
     </webServices> 
    </scripting> 
    </system.web.extensions> 
<system.webServer> 
.... 
</system.webServer> 
</configuration> 

答えて

10

ですJavaScriptSerializer

あなたはweb.configファイルに格納される値が必要な場合は、50000000の値でmaxJsonLength呼ば<appSettings>セクションのキーを追加することができ、その後、あなたのコードでは、あなたのようにそれを使用することができます

var serializer = new JavaScriptSerializer(); 
serializer.MaxJsonLength = ConfigurationManager.AppSettings['maxJsonLength']; 
+1

**内部インスタンス**を太字で表示する必要があります。それは私が誤解したものです! –

+0

完了。また、私はあなたにC#の例を与え、今まであなたのvb.netタグを見ていないことを実現しました:) – lhan

関連する問題