que estoy recibiendo este error:consiguiendo "La solicitud JSON era demasiado grande para ser deserializado"
The JSON request was too large to be deserialized.
Aquí es un escenario donde esto ocurre. Tengo una clase de país que mantenga una lista de puertos de embarque de ese país
public class Country
{
public int Id { get; set; }
public string Name { get; set; }
public List<Port> Ports { get; set; }
}
utilizo KnockoutJS en el lado del cliente para hacer unos menús desplegables en cascada. Así que tenemos una variedad de dos menús desplegables, donde el primero es el país y el segundo es los puertos de ese país.
Todo está funcionando muy bien hasta ahora, ésta es mi script del lado del cliente:
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([]),
countries = 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/GetCountriesWithPorts', function (data) {
countries(data);
});
};
return {
MarketInfoItems: marketInfoItems,
Countries: countries,
LoadData: loadData,
SaveMarketInfo: saveMarketInfo,
};
}();
El problema se produce cuando se selecciona un país como China, que tiene un montón de los puertos. Entonces, si tienes 3 o 4 veces "China" en tu matriz y quiero enviarlo al servidor para guardarlo. El error ocurre
¿Qué debo hacer para remediar esto?
Para cualquiera que tenga curiosidad por saber por qué sucede esto o escriba su serializador de clientes, eche un vistazo al [código fuente de JsonValueProviderFactory.cs] (https://github.com/mono/aspnetwebstack/blob/master/src/System.Web. Mvc/JsonValueProviderFactory.cs # L118) - parece que el equipo de ASP.NET MVC puso intencionadamente el límite en 1000. – kape123