微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 如何通过[WebMethod]返回数据表

我有一个网络服务,应该返回收件箱中的前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我把它声明为一个对象但是没有工作以太……叹了口气,我应该将它声明为什么?
这是错误….

system.invalidOperationException: There was an error generating the
XML document. —> system.invalidOperationException: Cannot serialize
the DataTable. DataTable name is not set.

解决方法

为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.

原文地址:https://www.jb51.cc/csharp/97624.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐