2008-09-15 14 views
14

Esta mañana me encontré con un problema al devolver una cadena de texto como resultado de una llamada al servicio web. el error que estaba recibiendo está por debajoError al serializar String en la llamada a WebService

************** Exception Text ************** 
System.ServiceModel.CommunicationException: Error in deserializing body of reply message for operation 'GetFilingTreeXML'. ---> System.InvalidOperationException: There is an error in XML document (1, 9201). ---> System.Xml.XmlException: The maximum string content length quota (8192) has been exceeded while reading XML data. This quota may be increased by changing the MaxStringContentLength property on the XmlDictionaryReaderQuotas object used when creating the XML reader. Line 1, position 9201. 
at System.Xml.XmlExceptionHelper.ThrowXmlException(XmlDictionaryReader reader, String res, String arg1, String arg2, String arg3) 
at System.Xml.XmlExceptionHelper.ThrowMaxStringContentLengthExceeded(XmlDictionaryReader reader, Int32 maxStringContentLength) 
at System.Xml.XmlDictionaryReader.ReadString(Int32 maxStringContentLength) 
at System.Xml.XmlDictionaryReader.ReadString() 
at System.Xml.XmlBaseReader.ReadElementString() 
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderImageServerClientInterfaceSoap.Read10_GetFilingTreeXMLResponse() 
at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer9.Deserialize(XmlSerializationReader reader) 
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events) 
--- End of inner exception stack trace --- 
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events) 
at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle) 
at System.ServiceModel.Dispatcher.XmlSerializerOperationFormatter.DeserializeBody(XmlDictionaryReader reader, MessageVersion version, XmlSerializer serializer, MessagePartDescription returnPart, MessagePartDescriptionCollection bodyParts, Object[] parameters, Boolean isRequest) 
--- End of inner exception stack trace --- 

Hice una búsqueda y los resultados son a continuación: Search Results

La mayoría de las personas están relacionados WCF, pero fueron suficientes para apuntar en la dirección correcta. Voy a publicar respuesta como respuesta.

+0

re: su bandera; es más complicado que eso. Por favor pregunta en [meta]. – Will

+0

Perdón por preguntar lo obvio: ¿Puedes verificar que la cadena que estás devolviendo desde el servicio web es más larga que 8192 bytes? – Espo

+0

sí, fue más largo y tuve que actualizar el archivo de configuración, como se menciona en la publicación de blog vinculada, y eso lo solucionó. gracias por la respuesta – MikeScott8

Respuesta

29

Pruebe esta publicación de blog here. Puede modificar la propiedad MaxStringContentLength en la configuración de enlace.

+0

sí, fue la solución, tuve que actualizar el archivo de configuración, como se menciona en la publicación del blog vinculado, y que lo arregló. gracias por la respuesta – MikeScott8

+3

Al igual que una nota para mayor claridad, la configuración de la cuota del lector debe realizarse en la aplicación.config o web.config para el lado de la comunicación que recibirá la cadena grande. es decir, necesitaba enviar una gran cantidad de datos desde mi aplicación cliente a mi punto final del servicio, así que tuve que hacer los cambios en el archivo web.config para el servicio. Devolver datos de gran tamaño del servicio a la aplicación del cliente requería cambios en la aplicación.config del cliente. Espero que esto ayude a alguien más. – kirps

6

Jow Wirtley's blog post me indicaron en la dirección correcta.

Todo lo que tenía que hacer era actualizar los enlaces en el app.config de la aplicación cliente y todo funciona ahora.

Cuestiones relacionadas