sto ottenendo questo errore:Ottenere "La richiesta JSON era troppo grande per essere deserializzati"
The JSON request was too large to be deserialized.
Ecco uno scenario in cui ciò si verifica. Ho una classe di paese che in possesso di un elenco di porte di spedizione di quel paese
public class Country
{
public int Id { get; set; }
public string Name { get; set; }
public List<Port> Ports { get; set; }
}
Io uso KnockoutJS sul lato client per fare un bassi cascata goccia. Quindi abbiamo una serie di due elenchi a discesa, in cui il primo è il paese e il secondo è il porto di quel paese.
Tutto sta funzionando bene finora, questo mio script lato 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([]),
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,
};
}();
Il problema si verifica quando viene selezionato un paese come la Cina, che ha un sacco di porte. Quindi se hai 3 o 4 volte "Cina" nel tuo array e voglio inviarlo al server per salvare. L'errore si verifica
Cosa devo fare per porre rimedio a questo?
Per chiunque sia curioso del motivo per cui ciò accade o per scrivere il serializzatore del cliente: dare un'occhiata a [codice sorgente di JsonValueProviderFactory.cs] (https://github.com/mono/aspnetwebstack/blob/master/src/System.Web. Mvc/JsonValueProviderFactory.cs # L118) - sembra che il team ASP.NET MVC metta intenzionalmente il limite a 1000. – kape123