繁体   English   中英

在WCF服务响应中接收DataTable时发生错误

[英]An error occurred while receiving DataTable in wcf service response

我正在用C#开发Windows窗体应用程序。 我的数据库在wcf应用程序中处理。 在我的wcf应用程序中,我有一个称为演讲者的类,该类具有如下的称为view演讲者()的方法。 我的目的是在网格视图中查看讲师表。

public DataTable viewLec()
        {

            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["resourceAlloc"].ToString());

            DataTable dt = new DataTable();
            string vw = "select * from lecturers";

            SqlCommand cmd = new SqlCommand(vw,con);

            SqlDataAdapter adp = new SqlDataAdapter(cmd);
            adp.Fill(dt);


            return dt;

        }

在我的IService1.cs中:

  [OperationContract]
        DataTable viewLecturer();

Service1.svc.cs:

public DataTable viewLecturer()
        {
            Lecturer lec = new Lecturer();
            return lec.viewLec();

        }

在我的Windows窗体应用程序按钮单击事件中,

private void button2_Click(object sender, EventArgs e)
{
    Service1Client obj = new Service1Client();   
    dataGridView1.DataSource = obj.viewLecturer();      
}

当我单击查看按钮时,发生以上错误,我不明白为什么?

我不知道您的代码的确切错误,但是我想提到的第一件事是将DataTable对象用作您的数据合约不是最好的主意,因为它包含一定数量的额外数据,这些额外数据通常不会被最终应用程序占用。 但是无论如何,在您的特定情况下,WCF将无法序列化您的对象,因为它没有表名,而表名对于此类执行序列化是必不可少的。 尝试按照这种方式:

 DataTable dt = new DataTable();
 // Must set name for serialization to succeed.
 dt.TableName = "lecturers";

我看不到实际的错误(应该发布该错误以使您的答案更清楚),但是至少这将帮助您避免序列化错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM