Mam usługę internetową, która powinna zwrócić 5 najlepszych e-maili w mojej skrzynce odbiorczej i wyświetlić je w siatce danych. Najpierw umieszczam moje dane w numerze DataTable
. Ale ciągle dostaję błędyJak zwrócić datatable przez [WebMethod]
Oto mój kod, Czy brakuje mi czegoś lub oświadczam, że coś jest nie tak?
[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;
}
że problem jest publiczna DataTable miałem to uznane jako przedmiot, ale to nie działa eter .... ech, co należy zadeklarować ją jako?
jest to błąd ....
System.InvalidOperationException: Wystąpił błąd podczas generowania dokumentu XML. ---> System.InvalidOperationException: Nie można przekształcić do postaci szeregowej DataTable. Nazwa DataTable nie jest ustawiona.
[WebMethod] musi być statyczny, twój błąd mówi, że nie ma przypisanej nazwy ... spróbuj przypisać nazwę (np. DataTable.TableName = "MyTable") również. – Zachary
Na dłuższą metę będzie ci lepiej, jeśli przestaniesz używać datatables i będziesz używał obiektów silnie typowanych. –