私は受信トレイに上位5つの電子メールを返し、データグリッドに表示するWebサービスがあります。最初に私のデータをDataTable
に入れました。しかし、エラーを続ける[WebMethod]でデータテーブルを返す方法
ここに私のコードは、私は何かが不足しているか間違って何かを宣言していますか?
[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;
}
は
私はそれをオブジェクトとして宣言されていますが、それは、エーテルを動作しませんでしたのDataTable ....ため息、私はとしてそれを宣言すべき問題が公開されていると思いますか?
これは誤りです....
のSystem.InvalidOperationException: XMLドキュメントを生成中にエラーが発生しました。 ---> System.InvalidOperationException: DataTableをシリアル化できません。 DataTable名が設定されていません。
Aを作成するときにテーブル名だけを与えます[WebMethod]は静的にする必要があります。エラーには名前が割り当てられていないと表示されています...名前を割り当ててみてください(例: DataTable.TableName = "MyTable")。 – Zachary
データ型の使用をやめて強く型付けされたオブジェクトを使用すると、長期的にはより良い状態になります。 –