ayuda

10/08/2004 - 17:24 por susana | Informe spam
hola a todos!
Estoy intentando hacer un web service que me devuelva una
dataTable y al ejecutar me dice:

No se puede serializar el miembro
System.ComponentModel.MarshalByValueComponent.Site de tipo
System.ComponentModel.ISite porque es una interfaz.

como puedo solucionar esto?
muchas gracias por adelantado
 

Leer las respuestas

#1 CESAR DE LA TORRE [Microsoft MVP]
10/08/2004 - 21:38 | Informe spam
A pesar de que la clase DataTable implementa el interfaz ISerializable, sin
embargo, no puede serializarse sola a través de un Web Service. Tienes que
devolver un DataSet completo aunque solamente quieras devolver un DataTable,
porque la clase DataSet es quien gestiona la serialización del DataTable con
'marshalling'. No puedes hacer un 'marshalling' de DataTables (lo hace
automaticamente la clase proxy) basándote en WebServices. De todas formas no
hay casi penalización en rendimiento por pasar un DataSet en lugar de un
DataTable.
Solución: Qhe el WebMethod devuelva un Dataset.

Todo esto que te digo está documentado en el KB de Microsoft, en el artículo
306134:
http://support.microsoft.com/defaul...US;Q306134

César de la Torre
[Microsoft MVP - .NET XML WebServices]
[MCSE] [MCT]

Renacimiento
Microsoft GOLD Certified Partner
www.renacimiento.com



You have to transfer the whole DataSet because it is handling the
serialization of the DataTable for marshalling purposes. You cannot marshal
DataTables through web services. However, the extra overhead of a DataSet
with one DataTable is pretty small.


"susana" wrote in message
news:373001c47eee$1c2c0660$
hola a todos!
Estoy intentando hacer un web service que me devuelva una
dataTable y al ejecutar me dice:

No se puede serializar el miembro
System.ComponentModel.MarshalByValueComponent.Site de tipo
System.ComponentModel.ISite porque es una interfaz.

como puedo solucionar esto?
muchas gracias por adelantado

Preguntas similares