Problema al deserializar

15/12/2005 - 11:29 por Juan Miguel | Informe spam
Hola de nuevo a todos!!!
Hace unos dias escribi en este foro preguntando por como instalar un
servicio web en un servidor remoto, ya que lo habia desarrolado localmente.
Bien pues ya mas o menos lo tengo solucionado.

Ahora el problema con el que me enfrento es el siguiente: tengo un servicio
web que lo unico que hace es registrar los errores que se le envian como
parametro. Tengo declarado en el servicio web una clase Errores que es la que
serializo en un fichero. Y por otra parte tengo una clase cliente que es la
que envia los errores al servicio web, asi mediante una sola linea cualquier
programa que use la clase cliente puede enviar los errores al servicio web y
este los almacena serializandolos.

Pues bien, luego tengo un programa de administracion que es el que abre los
ficheros para deserializar los errores recibidos.
Pues bien mientras tenia el servicio web en el equipo local podia
perfectamente deserializar los ficheros y ver su contenido. Pero desde que lo
he puesto en el servidor remoto ubicado en la DMZ me da el siguiente error:

System.Runtime.Serialization.SerializationException: El tipo no está
resuelto para el miembro Errores.ObjetoError, Errores,
Version=1.0.2174.32752, Culture=neutral, PublicKeyToken=null.
at
System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinaryAssemblyInfo assemblyInfo, String name)
at System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(String
objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[]
typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32
objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
at System.Runtime.Serialization.Formatters.Binary.ObjectMap.Create(String
name, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[]
typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32
objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
at
System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped record)
at
System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryHeaderEnum binaryHeaderEnum)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
at
System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler
handler, __BinaryParser serParser, Boolean fCheck, IMethodCallMessage
methodCallMessage)
at
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream
serializationStream, HeaderHandler handler, Boolean fCheck,
IMethodCallMessage methodCallMessage)
at
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler)
at
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream)
at AdministracionProgramas.RegistroErrores.MostrarContenidoError(String
RutaFichero) in
I:\Programas.Net\AdministracionProgramas\RegistroErrores.vb:line 170

Esto seria en el caso de serializacion binaria.

Pero si utilizo serializacion SOAP el error que me da es el siguiente:
System.Runtime.Serialization.SerializationException: Error de análisis, no
hay ningún tipo asociado con la clave Xml a1 Errores.ObjetoError Errores,
Version=1.0.2174.32752, Culture=neutral, PublicKeyToken=null
at
System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessGetType(String value, String xmlKey, String& assemblyString)
at
System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessType(ParseRecord pr, ParseRecord objectPr)
at
System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessAttributes(ParseRecord pr, ParseRecord objectPr)
at System.Runtime.Serialization.Formatters.Soap.SoapHandler.StartChildren()
at System.Runtime.Serialization.Formatters.Soap.SoapParser.ParseXml()
at System.Runtime.Serialization.Formatters.Soap.SoapParser.Run()
at
System.Runtime.Serialization.Formatters.Soap.ObjectReader.Deserialize(HeaderHandler handler, ISerParser serParser)
at
System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Deserialize(Stream
serializationStream, HeaderHandler handler)
at
System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Deserialize(Stream
serializationStream)
at AdministracionProgramas.RegistroErrores.MostrarContenidoError(String
RutaFichero) in
I:\Programas.Net\AdministracionProgramas\RegistroErrores.vb:line 170

Al deserializar creo un objeto de la clase definida en el servicio web, pero
es aqui donde me estan dando los errores.

¿Alguien me podria orientar un poco con este tema?

Muchas gracias.

Juan Miguel
 

Leer las respuestas

#1 Juan Miguel
15/12/2005 - 13:47 | Informe spam
Acabo de probar con serializacion XML y no me da ningun error al
deserializar, pero lo que ocurre es que no me recupera la informacion y mi
objeto se queda sin datos cuando deberia tener los datos del fichero
deserializado.

:(

Algo debo de estar haciendo mal supongo.

Agradeceria cualquier ayuda.

Gracias.

Juan Miguel


"Juan Miguel" escribió:

Hola de nuevo a todos!!!
Hace unos dias escribi en este foro preguntando por como instalar un
servicio web en un servidor remoto, ya que lo habia desarrolado localmente.
Bien pues ya mas o menos lo tengo solucionado.

Ahora el problema con el que me enfrento es el siguiente: tengo un servicio
web que lo unico que hace es registrar los errores que se le envian como
parametro. Tengo declarado en el servicio web una clase Errores que es la que
serializo en un fichero. Y por otra parte tengo una clase cliente que es la
que envia los errores al servicio web, asi mediante una sola linea cualquier
programa que use la clase cliente puede enviar los errores al servicio web y
este los almacena serializandolos.

Pues bien, luego tengo un programa de administracion que es el que abre los
ficheros para deserializar los errores recibidos.
Pues bien mientras tenia el servicio web en el equipo local podia
perfectamente deserializar los ficheros y ver su contenido. Pero desde que lo
he puesto en el servidor remoto ubicado en la DMZ me da el siguiente error:

System.Runtime.Serialization.SerializationException: El tipo no está
resuelto para el miembro Errores.ObjetoError, Errores,
Version=1.0.2174.32752, Culture=neutral, PublicKeyToken=null.
at
System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinaryAssemblyInfo assemblyInfo, String name)
at System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(String
objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[]
typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32
objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
at System.Runtime.Serialization.Formatters.Binary.ObjectMap.Create(String
name, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[]
typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32
objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
at
System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped record)
at
System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryHeaderEnum binaryHeaderEnum)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
at
System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler
handler, __BinaryParser serParser, Boolean fCheck, IMethodCallMessage
methodCallMessage)
at
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream
serializationStream, HeaderHandler handler, Boolean fCheck,
IMethodCallMessage methodCallMessage)
at
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler)
at
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream)
at AdministracionProgramas.RegistroErrores.MostrarContenidoError(String
RutaFichero) in
I:\Programas.Net\AdministracionProgramas\RegistroErrores.vb:line 170

Esto seria en el caso de serializacion binaria.

Pero si utilizo serializacion SOAP el error que me da es el siguiente:
System.Runtime.Serialization.SerializationException: Error de análisis, no
hay ningún tipo asociado con la clave Xml a1 Errores.ObjetoError Errores,
Version=1.0.2174.32752, Culture=neutral, PublicKeyToken=null
at
System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessGetType(String value, String xmlKey, String& assemblyString)
at
System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessType(ParseRecord pr, ParseRecord objectPr)
at
System.Runtime.Serialization.Formatters.Soap.SoapHandler.ProcessAttributes(ParseRecord pr, ParseRecord objectPr)
at System.Runtime.Serialization.Formatters.Soap.SoapHandler.StartChildren()
at System.Runtime.Serialization.Formatters.Soap.SoapParser.ParseXml()
at System.Runtime.Serialization.Formatters.Soap.SoapParser.Run()
at
System.Runtime.Serialization.Formatters.Soap.ObjectReader.Deserialize(HeaderHandler handler, ISerParser serParser)
at
System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Deserialize(Stream
serializationStream, HeaderHandler handler)
at
System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Deserialize(Stream
serializationStream)
at AdministracionProgramas.RegistroErrores.MostrarContenidoError(String
RutaFichero) in
I:\Programas.Net\AdministracionProgramas\RegistroErrores.vb:line 170

Al deserializar creo un objeto de la clase definida en el servicio web, pero
es aqui donde me estan dando los errores.

¿Alguien me podria orientar un poco con este tema?

Muchas gracias.

Juan Miguel

Preguntas similares