Je reçois cette erreur:
La requête JSON était trop volumineuse pour être désérialisée.
Voici un scénario où cela se produit. J’ai une classe de pays qui détient une liste de ports maritimes de ce pays
public class Country { public int Id { get; set; } public ssortingng Name { get; set; } public List Ports { get; set; } }
J’utilise KnockoutJS du côté client pour créer des menus déroulants en cascade. Nous avons donc une série de deux listes déroulantes, la première étant le pays et la seconde, les ports de ce pays.
Tout fonctionne bien jusqu’à présent, ceci est mon script côté client:
var k1 = k1 || {}; $(document).ready(function () { k1.MarketInfoItem = function (removeable) { var self = this; self.CountryOfLoadingId = ko.observable(); self.PortOfLoadingId = ko.observable(); self.CountryOfDestinationId = ko.observable(); self.PortOfDestinationId = ko.observable(); }; k1.viewModel = function () { var marketInfoItems = ko.observableArray([]), counsortinges = ko.observableArray([]), saveMarketInfo = function () { var jsonData = ko.toJSON(marketInfoItems); $.ajax({ url: 'SaveMarketInfos', type: "POST", data: jsonData, datatype: "json", contentType: "application/json charset=utf-8", success: function (data) { if (data) { window.location.href = "Fin"; } else { alert("Can not save your market information now!"); } }, error: function (data) { alert("Can not save your contacts now!"); } }); }, loadData = function () { $.getJSON('../api/ListService/GetCounsortingesWithPorts', function (data) { counsortinges(data); }); }; return { MarketInfoItems: marketInfoItems, Counsortinges: counsortinges, LoadData: loadData, SaveMarketInfo: saveMarketInfo, }; } ();
Le problème se produit lorsqu’un pays comme la Chine est sélectionné, qui possède beaucoup de ports. Donc, si vous avez 3 ou 4 fois “Chine” dans votre tableau et que je veux l’envoyer au serveur pour enregistrer. L’erreur se produit
Que dois-je faire pour remédier à cela?
Vous devez ajuster la propriété maxJsonLength à une valeur supérieure dans web.config
pour résoudre le problème.
Définissez une valeur supérieure pour aspnet:MaxJsonDeserializerMembers
dans les AppSettings:
Si ces options ne fonctionnent pas, vous pouvez essayer de créer une fabrique de fournisseurs de valeur json personnalisée à l’aide de JSON.NET, comme spécifié dans ce thread .