11 votes

Comment augmenter la taille limite de json pour l'appel ASP.NET WebAPI Post ?

Mon formulaire sur la page est un peu trop grand. Il recueille les données de mesure mensuelles. Jetez un coup d'œil à l'échantillon :

{
"Year":2013,
"Month":3,
"Records":[
    {"Id":0,"Date":"3/1/2013","RiverSection":5,"UserNumber":56},
    {"Id":0,"Date":"3/1/2013","RiverSection":7,"UserNumber":200},
    {"Id":0,"Date":"3/1/2013","RiverSection":8,"UserNumber":556},
    {"Id":0,"Date":"3/2/2013","RiverSection":5,"UserNumber":56},
    {"Id":0,"Date":"3/2/2013","RiverSection":7,"UserNumber":200},
    ...
    ...
    {"Id":0,"Date":"3/31/2013","RiverSection":7,"UserNumber":200}
}

Je transfère donc les données vers un contrôleur APIC.

Je fonctionne bien sur ma machine locale en utilisant le serveur de débogage de Visual Studio. Mais après avoir téléchargé le code sur le serveur (IIS 6). Il donne un 500 Internal Server Error .

J'ai essayé d'afficher des échantillons de données et j'ai vérifié la longueur de la chaîne de caractères json.

Dans un échantillon de données, la longueur de mon json est de 5743, et j'ai obtenu un "succès". Mais si la taille du json passe à 17345, j'obtiens un "succès". 500 Internal Server Error .

J'ai donc essayé d'augmenter la limite de json. Base sur ce poste

En Web.Config :

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

Mais cela ne fonctionne pas.

Il existe une autre réponse, l'utilisation :

var serializer = new JavaScriptSerializer();
serializer.MaxJsonLength = Int32.MaxValue;

Mais où devons-nous placer ce code ? dans Global.asax ?

J'utilise IIS 6, est-ce un problème ? Comment puis-je augmenter correctement la limite de la taille du json afin que mes données puissent atteindre l'action WebApi ?

Merci de votre aide

19voto

Serhiy Points 711

Essayez d'ajouter le aspnet:MaxJsonDeserializerMembers sous appSettings en web.config

<add key="aspnet:MaxJsonDeserializerMembers" value="20000"/>

Source : Une requête ASP.NET contenant un grand nombre de clés de formulaire, de fichiers ou de membres de charge utile JSON échoue avec une exception.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X