none
Regresar un DataSet desde un web service

    Pregunta

  • Hola todos quetal tanto tiempo
    bueno pues tengo un problema

    Tengo un web service que debe regresar un DataSet pero me marca esta excepcion. en el mensaje del ws que devuelve el data set.

    Ya intente ponerlo dentro de una clase serializada  y sigue marcando lo mismo alguien puede ayudarme

    using

     

    System;

    using

     

    System.Data;

    [

    Serializable]

     

    public class SerializeDataTable

    {

     

    public DataTable dt;

     

    public SerializeDataTable()

    {

    }

     

    public SerializeDataTable(DataTable dt)

    {

     

    this.dt = dt;

    }

     

    public DataTable Dt

    {

     

    get { return dt; }

    }

    }




    System.Web.Services.Protocols.SoapException:
    Server was unable to process request. --->
    System.InvalidOperationException:
    There was an error generating the XML document. --->
    System.InvalidOperationException:Cannot serialize the DataTable.
    DataTable name is not set.
       at System.Data.DataTable.WriteXmlSchema(XmlWriter writer, Boolean writeHierarchy)
       at System.Data.DataTable.System.Xml.Serialization.IXmlSerializable.WriteXml(XmlWriter writer)
       at System.Xml.Serialization.XmlSerializationWriter.WriteSerializable(IXmlSerializable serializable, String name, String ns, Boolean isNullable, Boolean wrapped)
       at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write13_consultaDataTableResponse(Object[] p)
       at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer5.Serialize(Object objectToSerialize, XmlSerializationWriter writer)
       at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
       --- End of inner exception stack trace ---
       at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
       at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle)
       at System.Web.Services.Protocols.SoapServerProtocol.WriteReturns(Object[] returnValues, Stream outputStream)
       at System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] returnValues)
       at System.Web.Services.Protocols.WebServiceHandler.Invoke()
       --- End of inner exception stack trace ---


    oxtibu-Mexico
    jueves, 13 de agosto de 2009 17:31

Respuestas

  • No DataTable no implenta la interface ISerializable ese fue el probelma lo resolvi enviando un DataSet que si lo implementa.


    oxtibu-Mexico
    • Marcado como respuesta oxtibu viernes, 21 de agosto de 2009 16:50
    viernes, 21 de agosto de 2009 16:50

Todas las respuestas

  • DataTable name is not set.
    Simplemente dale un nombre al datatable

    public SerializeDataTable(DataTable dt)

    {

    dt.TableName="nombreDT";

    this.dt = dt;

    }

     

    Sashka


    Sashka (Ursula Bazo)
    jueves, 13 de agosto de 2009 17:40
  • si mal no recuerdo la definicion de la clase DataSet tiene el atributo serializable, por lo cual no debes tener problema, prueba dandole nombre como te dice sashka
    jueves, 13 de agosto de 2009 18:36
  • perdon, implementa la interfaz ISerializable
    jueves, 13 de agosto de 2009 18:37
  • No DataTable no implenta la interface ISerializable ese fue el probelma lo resolvi enviando un DataSet que si lo implementa.


    oxtibu-Mexico
    • Marcado como respuesta oxtibu viernes, 21 de agosto de 2009 16:50
    viernes, 21 de agosto de 2009 16:50