Código fuente Vbwcf
En otras palabras, no hay problema al serializar y deserializar esta gran cantidad de datos. El principal problema todavía surge en la información de la conferencia WCF.
Establece la propiedad de ReaderQuotas, que establece la complejidad del mensaje.
Sentí que este síntoma era muy similar a ser asesinado por DOS, así que pensé en ReaderQuotas.
Aquí hay un ejemplo de lo que probé.
Código C#
byte público[]get mays(){ DataContractSerializer DCZ = newDataContractSerializer(tipo de (List lt; May gt) lista ltMay gtlist = nueva lista ltMay gt( ); for (int I = 0; i lt30000; i ) { mayo tmp = nuevo mayo { Nombre = FechaHora. ahora .ToString("aaaa-MM-DD")}; add(tmp);} usando (flujo de memoria fs = nuevo flujo de memoria()){ DCZ. WriteObject(fs, lista); devuelve fs. to array();} }
-
Hazlo a tu manera. El cliente necesita configurarlo.
netTcpBinding. cuotas de lectores . MaxArrayLength = 2147483647;
netTcpBinding. cuotas de lectores . MaxStringContentLength = 2147483647;
netTcpBinding. cuotas de lectores . MaxBytesPerRead = 2147483647;
// -
System. diagnóstico. Cronómetro myWatch = nuevo sistema. Diagnóstico .Cronómetro();
Mi reloj. start();
//información taxi[]información taxi = servicio de posición. GetAllTaxiInfos();
byte[] sds = PositionService. get mays();
Mi reloj. stop();
Consola. WriteLine("Consume mucho tiempo:" mywatch. Milisegundos transcurridos "ms");
memoria de flujo de memoria = nuevo flujo de memoria (SDS);
lector XmlDictionaryReader =
Lector de diccionario XML.
CreateTextReader(memoria, nuevo léelo.
lista ltTaxiInfo gtdeserializer=
(lista ltTaxiInfo gt)ser. ReadObject(lector, verdadero);
Lector. close();
//Consola. WriteLine(deserialized person);
Así que eso no es problema.