System.Collections.Generic.List ed i web service domenica 17 febbraio 2008 - 12.25

pierosoft Profilo | Newbie

Salve a tutti ho un piccolo problema che non riesco a risolvere :
vorrei passare un oggetto List<Object> tramite web service. Precisamente la funzione che mi da l'oggetto nel mio web serice è la seguente:

[WebMethod] public List<Object> getDataList(string strSql, string strConn) { DataSet ds; ds = da.getDataset(strSql, strConn); if (ds != null) { List<Object> lr = new List<Object>(ds.Tables[0].Rows.Count); foreach (DataRow row in ds.Tables[0].Rows) { Object obj = row.ItemArray; lr.Add(obj); } return lr; } else return null; }
dove dalla funzione getDataset(strSql, strConn) ottengo un dataset

nel lato client invece richiamo la funzione così :

protected void Button1_Click(object sender, EventArgs e) { strSql = "select * from ....."; //stringa sql. List<Object> oggetto ; try { oggetto = new List<Object>(da.getDataList(strSql, strConn)); } catch (Exception ex) { Console.Write(ex.ToString()); } }

dove strConn è la stringa di connessione del DB e da è la variabile che richiama le funzioni del Web Service.
Effettuando il debug si vede che il codice richiama la funzione getDataList eseguendola ma all'uscita della funzione ottengo il seguente errore:

"System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.InvalidOperationException: There was an error generating the XML document. ---> System.InvalidOperationException: The type System.Object[] may not be used in this context.\n at System.Xml.Serialization.XmlSerializationWriter.WriteTypedPrimitive(String name, String ns, Object o, Boolean xsiType)\n at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write1_Object(String n, String ns, Object o, Boolean isNullable, Boolean needType)\n at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write5_getDataListResponse(Object[] p)\n at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer5.Serialize(Object objectToSerialize, XmlSerializationWriter writer)\n at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)\n --- E
nd of inner exception stack trace ---\n at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)\n at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle)\n at System.Web.Services.Protocols.SoapServerProtocol.WriteReturns(Object[] returnValues, Stream outputStream)\n at System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] returnValues)\n at System.Web.Services.Protocols.WebServiceHandler.Invoke()\n --- End of inner exception stack trace ---\r\n at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)\r\n at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)\r\n at NeoAgent.AccessoDati.WebDataGis.getDataList(String strSql, String strConn) in E:\\Docum
enti\\Visual Studio 2005\\Projects\\NeoAgent\\NeoAgent\\Web References\\AccessoDati\\Reference.cs:line 251\r\n at NeoAgent.parametri.Button1_Click(Object sender, EventArgs e) in E:\\Documenti\\Visual Studio 2005\\Projects\\NeoAgent\\NeoAgent\\parametri.aspx.cs:line 139"

grazie anticipatamente per l'aiuto.
Piero

Ferux Profilo | Newbie

Ciao,
prova a dare un occhio a questo esempio riportato su MSDN:

http://msdn2.microsoft.com/en-us/library/68c887c0.aspx

Spero ti sia di aiuto
Saluti
Ing Ferux
[MCP MCAD]

pierosoft Profilo | Newbie

Ti ringrazio per la risposta, ho provato a scaricare quei documenti ma ci sono tanti esempi e nessuno che indichi l'uso del web service che interessa a me.
grazie lo stesso.

Piero
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5