Tengo un servicio web que debe devolver los 5 correos principales en mi bandeja de entrada y mostrarlos en una cuadrícula de datos. Puse mis datos en un DataTable
primero. Pero sigue recibiendo erroresCómo devolver una tabla de datos por un [WebMethod]
Aquí está mi código, ¿Me falta algo o declaro algo malo?
[WebMethod]
public DataTable DisplayMailList(String inMailServer, String inPort, bool inSSlCheck, String inUsername, String inPassword)
{
objClient.Connect(inMailServer, int.Parse(inPort), inSSlCheck);
objClient.Authenticate(inUsername, inPassword);
int count = objClient.GetMessageCount();
DataTable dtMessages = new DataTable(); // Creating datatable.
dtMessages.Columns.Add("MessageNumber");
dtMessages.Columns.Add("From");
dtMessages.Columns.Add("Subject");
dtMessages.Columns.Add("DateSent");
dtMessages.TableName = "dtMessages";
int counter = 0;
for (int i = count; i >= 1; i--)
{
OpenPop.Mime.Message msg = objClient.GetMessage(i);
dtMessages.Rows.Add();
dtMessages.Rows[dtMessages.Rows.Count - 1]["MessageNumber"] = i; //Populateing Datatable
dtMessages.Rows[dtMessages.Rows.Count - 1]["Subject"] = msg.Headers.Subject;
dtMessages.Rows[dtMessages.Rows.Count - 1]["DateSent"] = msg.Headers.DateSent;
counter++;
if (counter > 5)
{
break;
}
}
return dtMessages;
}
que el problema es pública DataTable lo tenía declarado como un objeto, sino que no funcionaba éter .... suspiro, lo que debería declarar como?
éste es el error ....
System.InvalidOperationException: Se ha producido un error al generar el documento XML . ---> System.InvalidOperationException: No se puede serializar DataTable. El nombre de DataTable no está configurado.
Un [WebMethod] debe estar estático, su el error dice que no hay un nombre asignado ... intenta asignar un nombre (p. DataTable.TableName = "MyTable") también. – Zachary
Será mejor, a largo plazo, si deja de usar tablas de datos y usa objetos fuertemente tipados. –