Red de conocimiento informático - Problemas con los teléfonos móviles - Código fuente Vbwcf

Código fuente Vbwcf

Este problema se puede resolver deserializar manualmente el DataContractSerializer predeterminado de WCF en un byte [] y luego deserializarlo manualmente después de recibirlo. En otras palabras, se puede pasar un simple byte [] y la lista en el código siguiente se cambia directamente a lista

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.