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