Si vous utilisez MVC 4 n'oubliez pas de consulter cette réponse également.
Si vous recevez toujours l'erreur :
- après avoir réglé le
maxJsonLength
à sa valeur maximale dans le web.config
- et vous savez que la longueur de vos données est inférieure à cette valeur
- et que vous n'utilisez pas une méthode de service Web pour la sérialisation JavaScript.
votre problème est probablement que :
La valeur de la propriété MaxJsonLength s'applique uniquement à l'instance interne de JavaScriptSerializer qui est utilisée par la couche de communication asynchrone pour invoquer les méthodes des services Web. ( MSDN : ScriptingJsonSerializationSection.Propriété MaxJsonLength )
Fondamentalement, le "interne" JavaScriptSerializer
respecte la valeur de maxJsonLength
lorsqu'il est appelé à partir d'une méthode web ; l'utilisation directe d'une JavaScriptSerializer
(ou l'utiliser via une méthode d'action/Contrôleur MVC) fait que no respecter le maxJsonLength
du moins pas à partir de la systemWebExtensions.scripting.webServices.jsonSerialization
de la section web.config. En particulier, la section Controller.Json()
méthode n'est pas Respectez les paramètres de configuration !
Comme solution de rechange, vous pouvez effectuer les opérations suivantes dans votre contrôleur (ou n'importe où, en fait) :
var serializer = new JavaScriptSerializer();
// For simplicity just use Int32's max value.
// You could always read the value from the config section mentioned above.
serializer.MaxJsonLength = Int32.MaxValue;
var resultData = new { Value = "foo", Text = "var" };
var result = new ContentResult{
Content = serializer.Serialize(resultData),
ContentType = "application/json"
};
return result;
Cette réponse est mon interprétation de cette réponse du forum asp.net .
1 votes
Il y a une chose à mentionner qui est peut-être évidente, alors excusez-moi si vous y avez déjà pensé : la chaîne Json comprend également les crochets autour de chaque enregistrement, les guillemets autour de chaque nom de champ [et valeur], ainsi que le nom et la valeur du champ. Il peut donc être utile de définir le nom du champ comme un caractère unique et de s'assurer que si la valeur n'est pas une chaîne, vous définissez correctement le type de champ afin qu'il ne contienne pas de guillemets.