JavaScriptSerializer.MaxJsonLength dépassé. Quelle est la meilleure pratique pour gérer cela?
J'ai une grande quantité de données, je suis l'envoi vers le client à l'aide de jQuery $.ajax() de la fonction. Je suis d'appeler une méthode dans un ASP.NET service web qui renvoie les données JSON. Tout est grand pour la plupart des recherches, mais quand j'ai un grand ensemble de données de retour, je rencontre un problème avec le JavaScriptSerializer MaxJsonLength de la propriété. Quelle est la meilleure pratique pour gérer cela? Je ne veux pas simplement fixé arbitrairement, longueur max. Puis-je définir le MaxJsonLength dans le service web si les données retourné est plus grand que le courant max ou dois-je ré-écrire et d'envoyer des mandrins de données de la client?
Voici pertinentes de l'extrait à partir du service web:
Dictionary<string, object> jsonValuePairs = new Dictionary<string, object>();
//add some data to the dictionary...
return System.Web.Script.Serialization.JavaScriptSerializer.Serialize(jsonValuePairs);
OriginalL'auteur Tim Scarborough | 2009-06-25
Vous devez vous connecter pour publier un commentaire.
La seule façon de définir la longueur maximale pour le web méthodes qui sont appelées à partir d'un script client est à travers le web.fichier de configuration (ci-dessous).
Quel est votre problème avec la définition de cette?
Je voudrais faire cela à chaque fois sur plusieurs xhr appels pour diffuser une partie de ces données.
Mise à JOUR: La taille par défaut est de 2097152 qui est l'équivalent de 4 MO de chaînes Unicode. Allez-vous vraiment envoyer autant de données vers le client? Si oui ouch et vous prob besoin de regarder à l'application de la conception que l'expérience utilisateur sera lente et lourde.
ah votre question a déclaré: "je ne veux pas simplement fixer arbitrairement un max de longueur" qui je suppose que vous vouliez dire dans le web.config.
Désolé pour la confusion. Je ne sais pas la taille max de mes données peut être. Je pense que je vais regarder dans n'utilisez pas le JavascriptSerializer objet.
J'ai dû changer cette valeur et de mes données n'était 100KB. Donc, je ne pense pas que la valeur par défaut est de 4 mo.
OriginalL'auteur redsquare
2147483647
est la valeur correcte à utiliser. Juste pour éviter toute confusion dans le code que vous pouvez utiliser quelque chose commeOriginalL'auteur DJ'
Le maximum de valeur de cette propriété est de 2 147 483 647 selon ce post sur le forum.
Je n'ai pas passé du temps à optimiser les données que j'retour, encore (je vais le faire avant que quelqu'un ne la voit) - mais avec cette valeur est définie, c'est à dire a commencé à me donner du " un script sur la page prend trop de temps voulez-vous de tuer ce message.
Une solution serait de segmenter les données - personne ne sait de, une belle façon de le faire (en jQuery dans l'idéal)? Je pouvais juste faire un autre appel ajax dans le gestionnaire de succès, bien sûr.
OriginalL'auteur Ian Grainger
La longueur maximale autorisée est la valeur maximale d'un Entier peut contenir ce qui arrive à l'être - 2147483647
OriginalL'auteur user2704583
ajouter ce morceau de code sur le web.config :
et dans votre code c#:
OriginalL'auteur Amit