c# – 如何通过[WebMethod]返回数据表
发布时间:2020-12-15 18:07:38 所属栏目:百科 来源:网络整理
导读:我有一个网络服务,应该返回收件箱中的前5个电子邮件,并将它们显示在数据网格中.我首先将数据放入DataTable.但不断收到错误 这是我的代码,我错过了什么或者说错了吗? [WebMethod] public DataTable DisplayMailList(String inMailServer,String inPort,bool
我有一个网络服务,应该返回收件箱中的前5个电子邮件,并将它们显示在数据网格中.我首先将数据放入DataTable.但不断收到错误
这是我的代码,我错过了什么或者说错了吗? [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我把它声明为一个对象但是没有工作以太……叹了口气,我应该将它声明为什么?
解决方法
为dtMessages.DataTable名称赋值将停止序列化错误,如错误消息所示.
[WebMethod] public DataTable GetDataTable() { DataTable dt = new DataTable(); dt.Columns.Add("Col1",typeof(string)); dt.Rows.Add("testing"); dt.TableName = "Blah"; // <--- return dt; } 但我同意Bob Horn的说法,你最好为你的返回值定义一个类,而不是使用DataTable. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |