我有一个 WCF 服务,我想从中返回一个 DataTable。我知道这通常是一个备受争议的话题,就返回 DataTables 是否是一个好习惯而言。让我们把它放在一边。
当我从头开始创建 DataTable 时,如下所示,没有任何问题。该表已创建、填充并返回给客户端,一切正常:
[DataContract]
public DataTable GetTbl()
{
DataTable tbl = new DataTable("testTbl");
for(int i=0;i<100;i++)
{
tbl.Columns.Add(i);
tbl.Rows.Add(new string[]{"testValue"});
}
return tbl;
}
但是,我一出去打数据库创建表,如下所示,我得到一个 CommunicationException“底层连接已关闭:连接意外关闭。”
[DataContract]
public DataTable GetTbl()
{
DataTable tbl = new DataTable("testTbl");
//Populate table with SQL query
return tbl;
}
该表在服务器端正确填充。它比我循环并返回的测试表要小得多,而且查询小而快——这里没有超时或大数据传输的问题。正在使用相同的确切功能和 DataContracts/ServiceContracts/BehaviorContracts。
为什么表格的填充方式会对表格成功返回有任何影响?